zoukankan      html  css  js  c++  java
  • SQL2005 表分区亲测

    --增加文件组
    alter database Test add filegroup [FG1]
    go
    alter database Test add filegroup [FG2]
    GO
    alter database Test add filegroup [FG3]
    
    --增加文件
    ALTER DATABASE [Test] ADD FILE ( NAME = N'TestFG1', FILENAME = N'D:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATATestFG1.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [FG1]
    GO
    ALTER DATABASE [Test] ADD FILE ( NAME = N'TestFG2', FILENAME = N'D:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATATestFG2.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [FG2]
    GO
    ALTER DATABASE [Test] ADD FILE ( NAME = N'TestFG3', FILENAME = N'D:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATATestFG3.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [FG3]
    GO
    
    --创建分区函数
    CREATE PARTITION FUNCTION OrderDateRangePFN(datetime)
    AS
    RANGE LEFT FOR VALUES ('2012-12-31 23:59:59.997',
                '2013-12-31 23:59:59.997',
                '2014-12-31 23:59:59.997')
    
    --创建分区架构
    --创建分区函数后,必须将其与分区架构相关联,以便将分区定向至特定的文件组。
    --定义分区架构时,即使多个分区位于同一个文件组中,也必须为每个分区指定一个文件组。
    --对于前面创建的范围分区 (OrderDateRangePFN),存在五个分区;最后一个空分区将在 PRIMARY 文件组中创建。
    --因为此分区永远不包含数据,所以不需要指定特殊的位置。
    CREATE PARTITION SCHEME OrderDatePScheme 
    AS
    PARTITION OrderDateRangePFN 
    TO ([FG1], [FG2], [FG3], [PRIMARY])
    
    --注意:如果所有分区都位于同一个文件组中,则可以使用以下更简单的语法:
    /*CREATE PARTITION SCHEME OrderDatePScheme 
    AS
    PARTITION OrderDateRangePFN 
    ALL TO ([PRIMARY])*/
     
    --定义分区函数(逻辑结构)和分区架构(物理结构)后,即可创建表来利用它们。表定义应使用的架构,而架构又定义函数。要将这三者结合起来,必须指定应该应用分区函数的列。范围分区始终只映射到表中的一列,此列应与分区函数中定义的边界条件的数据类型相匹配。另外,如果表应明确限制数据集(而不是从负无穷大到正无穷大),则还应添加 CHECK 约束。
    
    create table Orders(ID INT IDENTITY(1,1),DT DATETIME NOT NULL,OrderNo nvarchar(20))
    ON  OrderDatePScheme(DT)
     
    
    --ALTER TABLE Orders
    --add CONSTRAINT OrdersPK
    --PRIMARY KEY  (ID)
    
    insert into Orders(DT,OrderNo)
    select '2012-01-01','123' union all 
    select '2013-01-01','212' union all 
    select '2015-01-01','120' 
    
    --查询
    SELECT *
    FROM dbo.Orders AS o
    WHERE $partition.OrderDateRangePFN(o.DT) IN (4) --1,2,3,4 代表分段
    
    
    --增加分区
    --1)先增加文件组及数据次要文件
    --2)更改数据架构
    ALTER PARTITION SCHEME OrderDatePScheme 
    NEXT USED [FG4]
    GO
    --更改分区函数,为 2014 年 12 月添加新的边界点。(拆分)
    ALTER PARTITION FUNCTION TwoYearDateRangePFN() 
    SPLIT RANGE ('2014-12-31 23:59:59.997')
    GO
    
    --移动数据到备份表
    --创建分区段表
    create table Orders2012(ID INT IDENTITY(1,1),DT DATETIME NOT NULL,OrderNo nvarchar(20))
    ON FG1
    
    ALTER TABLE Orders
    SWITCH PARTITION 1
    TO Orders2012
    GO
    
    --更改分区函数以删除 2012 年 月的边界点(合并)
    ALTER PARTITION FUNCTION OrderDateRangePFN()
    MERGE RANGE ('2012-12-31 23:59:59.997')
    GO
  • 相关阅读:
    Codeforces Round #527 (Div. 3) B. Teams Forming
    Train Problem I (栈的基本运用)
    浙江中医药大学第十二届大学生程序设计竞赛 J. Jhadgre爬楼梯
    判断二进制半整数
    简易连连看
    Codeforces Round #527 (Div. 3) A. Uniform String
    求字符串中出现次数最多的字符 JAVA
    母猪的故事 (递推题)
    C#判断文件和文件夹是否存在 不存在则创建
    C# 数据库备份与还原 小妹做了一个winform系统,需要对sql2000数据库备份和还原(小妹妹你太狠了)
  • 原文地址:https://www.cnblogs.com/martintuan/p/3724484.html
Copyright © 2011-2022 走看看