A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

拿出来跟大家分享下,顺便请大家指导下改进的地方。
  1. /*
  2. 分区表为按月分区
  3. 根据时间自动添加文件组,文件,修改分区函数,分区方案使其能够在新的一个月来临时自动添加新的分区

  4. 注:
  5. 本方法只适用于没有数据的新
  6. 必须先手动创建好分区表并添加几个文件,文件组
  7. */
  8. /*----------------------------------------------分割线----------------------------------------*/

  9. /*
  10. 下面脚本在第一次创建分区表时执行
  11. */
  12. --分区函数
  13. CREATE PARTITION FUNCTION IMenuStats_partition(datetime)
  14. AS RANGE RIGHT FOR VALUES(
  15. '20120101','20120201','20120301','20120401','20120501','20120601','20120701'
  16. )
  17. GO

  18. --文件组
  19. ALTER DATABASE test_shuijingbaobiao ADD FILEGROUP [GROUP20120101]
  20. ALTER DATABASE test_shuijingbaobiao        ADD FILEGROUP [GROUP20120201]
  21. ALTER DATABASE test_shuijingbaobiao ADD FILEGROUP [GROUP20120301]
  22. ALTER DATABASE test_shuijingbaobiao ADD FILEGROUP [GROUP20120401]
  23. ALTER DATABASE test_shuijingbaobiao ADD FILEGROUP [GROUP20120501]
  24. ALTER DATABASE test_shuijingbaobiao ADD FILEGROUP [GROUP20120601]
  25. ALTER DATABASE test_shuijingbaobiao ADD FILEGROUP [GROUP20120701]
  26. GO

  27. --文件
  28. ALTER DATABASE test_shuijingbaobiao
  29. ADD FILE
  30. (NAME = N'GROUP2010',FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\GROUP20120101.ndf',
  31. SIZE=5MB,FILEGROWTH=10% ) TO FILEGROUP [GROUP20120101]

  32. ALTER DATABASE test_shuijingbaobiao
  33. ADD FILE
  34. (NAME = N'GROUP2010',FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\GROUP20120201.ndf',
  35. SIZE=5MB,FILEGROWTH=10% ) TO FILEGROUP [GROUP20120201]

  36. ALTER DATABASE test_shuijingbaobiao
  37. ADD FILE
  38. (NAME = N'GROUP2010',FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\GROUP20120301.ndf',
  39. SIZE=5MB,FILEGROWTH=10% ) TO FILEGROUP [GROUP20120301]
  40. ALTER DATABASE test_shuijingbaobiao
  41. ADD FILE
  42. (NAME = N'GROUP2010',FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\GROUP20120401.ndf',
  43. SIZE=5MB,FILEGROWTH=10% ) TO FILEGROUP [GROUP20120401]

  44. ALTER DATABASE test_shuijingbaobiao
  45. ADD FILE
  46. (NAME = N'GROUP2010',FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\GROUP20120501.ndf',
  47. SIZE=5MB,FILEGROWTH=10% ) TO FILEGROUP [GROUP20120501]

  48. ALTER DATABASE test_shuijingbaobiao
  49. ADD FILE
  50. (NAME = N'GROUP2010',FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\GROUP20120601.ndf',
  51. SIZE=5MB,FILEGROWTH=10% ) TO FILEGROUP [GROUP20120601]

  52. ALTER DATABASE test_shuijingbaobiao
  53. ADD FILE
  54. (NAME = N'GROUP2010',FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\GROUP20120701.ndf',
  55. SIZE=5MB,FILEGROWTH=10% ) TO FILEGROUP [GROUP20120701]
  56. GO

  57. --分区方案
  58. CREATE PARTITION SCHEME [IMenuStatsSCHEME]
  59. AS
  60. PARTITION IMenuStats_partition TO
  61. ([GROUP20120101],[GROUP20120201],[GROUP20120301],[GROUP20120401],[GROUP20120501],[GROUP20120601],[GROUP20120701])
  62. GO

  63. /*
  64. 如果是为已有的普通表改为分区表则需如下脚本
  65. */
  66. --先删除主键
  67. ALTER TABLE IMenuStats DROP constraint PK_IMenuStats_1
  68. --为表添加主键
  69. ALTER TABLE IMEnuStats ADD CONSTRAINT PK_IMenustats_1 PRIMARY KEY
  70. NONCLUSTERED(
  71.         [id] ASC
  72. )
  73. GO
  74. --为表添加聚集索引
  75. CREATE CLUSTERED INDEX CT_IMenuStats ON IMenuStats([datetime])
  76. ON IMenuStatsSCHEME(datetime)
  77. GO

  78. /*
  79. 如果直接创建分区表则需如下脚本
  80. */
  81. CREATE TABLE [dbo].['表名'](  
  82.   [TeachingID] [uniqueidentifier] NOT NULL,  
  83.   [TeacherID] [uniqueidentifier] NULL,  
  84.   [TeacherName] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,  
  85.   [ClassID] [uniqueidentifier] NULL,  
  86.   [ClassName] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,  
  87.   [CourseID] [uniqueidentifier] NULL,  
  88.   [CourseName] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,  
  89.   [CourseSequenceID] [uniqueidentifier] NULL,  
  90.   [TeachingDate] [datetime] NOT NULL,  
  91.   [IsUsingEqt] [bit] NULL,  
  92.   [ScoreID] [uniqueidentifier] NULL,  
  93.   ......  
  94. ) ON FiveYearDateRangePScheme(TeachingDate)  
  95. --为表添加主键,因为新建分区表添加主键时会为其添加聚集索引
  96. ALTER TABLE [ObjTeaching]  
  97. ADD CONSTRAINT [ObjTeaching_PK]  
  98. PRIMARY KEY CLUSTERED ([TeachingID], [TeachingDate])  
  99. GO

  100. /*-----------------------------------------分割线--------------------------------------*/

  101. /*
  102. 以下为JOB中应填入的脚本
  103. */
  104. if((select convert(nvarchar(8),month(dateadd(d,+1,getdate())),112))>(select convert(nvarchar(8),month(getdate()),112)))
  105. begin

  106. DECLARE @dataBaseName NVARCHAR(50)--数据库名称
  107. DECLARE @sql NVARCHAR(MAX) --SQL句子
  108. DECLARE @tableName NVARCHAR(MAX) --表名
  109. DECLARE @fileName NVARCHAR(MAX) --文件名
  110. DECLARE @time nvarchar(20) --时间,用于命名

  111. set @time= convert(nvarchar(8),dateadd(d,+1,getdate()),112)

  112. set @dataBaseName='test_shuijingbaobiao'
  113. SET @fileName='FILE'+convert(nvarchar(7),year(getdate()),120)
  114. SET @tableName = 'GROUP'+ convert(nvarchar(8),dateadd(d,+1,getdate()),112) select @tableName
  115. set @sql ='ALTER DATABASE ['+@DataBaseName+']
  116. ADD FILEGROUP ['+@TableName+'];'
  117. PRINT @sql + CHAR(13)
  118. exec (@sql)

  119. end
复制代码

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

1 个回复

正序浏览
我勒个去,发完了才注意到代码木有高亮显示啊,这估计看起来会很蛋疼。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马