.Fun_+@TableName+_+@ColumnName+(+@ColumnName+);
PRINT @sql + CHAR(13)
生成的脚本如下:
--1.创建文件组
ALTER DATABASE [MyDataBase]
ADD FILEGROUP [FG_User_Id_01]
ALTER DATABASE [MyDataBase]
ADD FILEGROUP [FG_User_Id_02]
ALTER DATABASE [MyDataBase]
ADD FILEGROUP [FG_User_Id_03]
ALTER DATABASE [MyDataBase]
ADD FILEGROUP [FG_User_Id_04]
--2.创建文件
ALTER DATABASE [MyDataBase]
ADD FILE
(NAME = NFG_User_Id_01_data,FILENAME = NE:DataBaseFG_User_Id_01_data.ndf,SIZE = 30MB, FILEGROWTH = 10% )
TO FILEGROUP [FG_User_Id_01];
ALTER DATABASE [MyDataBase]
ADD FILE
(NAME = NFG_User_Id_02_data,FILENAME = NE:DataBaseFG_User_Id_02_data.ndf,SIZE = 30MB, FILEGROWTH = 10% )
TO FILEGROUP [FG_User_Id_02];
ALTER DATABASE [MyDataBase]
ADD FILE
(NAME = NFG_User_Id_03_data,FILENAME = NE:DataBaseFG_User_Id_03_data.ndf,SIZE = 30MB, FILEGROWTH = 10% )
TO FILEGROUP [FG_User_Id_03];
ALTER DATABASE [MyDataBase]
ADD FILE
(NAME = NFG_User_Id_04_data,FILENAME = NE:DataBaseFG_User_Id_04_data.ndf,SIZE = 30MB, FILEGROWTH = 10% )
TO FILEGROUP [FG_User_Id_04];
--3.创建分区函数
CREATE PARTITION FUNCTION
Fun_User_Id(INT) AS
RANGE RIGHT
FOR VALUES(10000000,20000000,30000000)
--4.创建分区方案
CREATE PARTITION SCHEME
Sch_User_Id AS
PARTITION Fun_User_Id
TO([FG_User_Id_01],[FG_User_Id_02],[FG_User_Id_03],[FG_User_Id_04])
--5.分区函数的记录数
SELECT $PARTITION.Fun_User_Id(Id) AS Partition_num,
MIN(Id) AS Min_value,MAX(Id) AS Max_value,COUNT(1) AS Record_num
FROM dbo.User
GROUP BY $PARTITION.Fun_User_Id(Id)
ORDER BY $PARTITION.Fun_User_Id(Id);
三、后记
在MSND的SQL Server 2005 中的分区表和索引中同样提供了一个脚本用于生成表分区,和他不同的是:他采用了表来保存文件路径,再使用游标来创建文件而已,其实这只能生成一部分代码,而我的脚本不同之处就是能最大限度的生成常规表分区的常用代码,方便快捷很多。有兴趣的童鞋可以
下载:SQL2005PartitioningScripts.exe
上面使用表保存信息的这种想法在后期的数据搬迁(比如需要对一个现有的表进行表分区,这种情况下通常会先建一个分区表,再进行导入现有表的数据)中是有很大的用处的,后面的文章中会讲讲如何进行自动化的数据搬迁,敬请留意。
|