zoukankan      html  css  js  c++  java
  • SQL code for the partitoned example

    --
    --Chapter 12 SQL code for the partitoned example.
    --
     
    USE AdventureWorks2008;

    -- Create the partition function
    CREATE PARTITION FUNCTION [OrderDateRangePFN](datetime)
    AS RANGE RIGHT
    FOR VALUES (N'2001-01-01 00:00:00', N'2002-01-01 00:00:00',
    N'2003-01-01 00:00:00', N'2004-01-01 00:00:00');


    -- Create the partition scheme
    CREATE PARTITION SCHEME [OrderDatePScheme]
    AS PARTITION [OrderDateRangePFN]
    TO ([Primary], [Primary], [Primary], [Primary], [Primary]);


    -- Create two tables: SalesOrderHeader is the partitioned table and SalesOrderHeaderOLD is the non-partitioned table

    CREATE TABLE [dbo].[SalesOrderHeader](
     [SalesOrderID] [int] NULL,
     [RevisionNumber] [tinyint] NOT NULL,
     [OrderDate] [datetime] NOT NULL,
     [DueDate] [datetime] NOT NULL,
     [ShipDate] [datetime] NULL,
     [Status] [tinyint] NOT NULL
    ) ON [OrderDatePScheme]([OrderDate]);

    CREATE TABLE [dbo].[SalesOrderHeaderOLD](
     [SalesOrderID] [int] NULL,
     [RevisionNumber] [tinyint] NOT NULL,
     [OrderDate] [datetime] NOT NULL  ,
     [DueDate] [datetime] NOT NULL,
     [ShipDate] [datetime] NULL,
     [Status] [tinyint] NOT NULL);

    -- Load daata into the partitioned table
    INSERT INTO SalesOrderHeader
    SELECT [SalesOrderID],[RevisionNumber], [OrderDate],[DueDate],[ShipDate],[Status] FROM SALES.[SalesOrderHeader];

    CREATE CLUSTERED INDEX SalesOrderHeaderCLInd
    ON SalesOrderHeader(OrderDate) ON OrderDatePScheme(OrderDate);

    CREATE CLUSTERED INDEX SalesOrderHeaderOLDCLInd ON SalesOrderHeaderOLD(OrderDate);

    ALTER  TABLE [DBO].[SalesOrderHeaderOLD]  WITH CHECK  ADD CONSTRAINT [CK_SalesOrderHeaderOLD_ORDERDATE] CHECK  ([ORDERDATE]>=('2003-01-01 00:00:00') AND [ORDERDATE]<('2004-01-01 00:00:00'));

    -- Verify data in the partitioned table
    SELECT $partition.OrderDateRangePFN(OrderDate) AS 'Partition Number' ,min(OrderDate) AS 'Min Order Date' , max(OrderDate) AS 'Max Order Date',count(*) AS 'Rows In Partition'
    FROM SalesOrderHeader
    GROUP BY $partition.OrderDateRangePFN(OrderDate);


    -- Switch the data from partition 4 into the SalesOrderHeaderOLD table
    ALTER TABLE SalesOrderHeader
    SWITCH PARTITION 4 TO SalesOrderHeaderOLD;


    -- Switch the data from SalesOrderHeaderOLD back to partition 4
    ALTER TABLE SalesOrderHeaderOLD   
    SWITCH TO SalesOrderHeader PARTITION 4;


    --To merge a partition range
    ALTER PARTITION FUNCTION OrderDateRangePFN()
    MERGE RANGE ('2003-01-01 00:00:00');



    -- To split a partition range
    ALTER PARTITION SCHEME OrderDatePScheme NEXT USED [Primary];
    ALTER PARTITION FUNCTION OrderDateRangePFN()
    SPLIT RANGE ('2003-01-01 00:00:00');

  • 相关阅读:
    MSchart设置网格线
    搭建ELDK交叉编译环境
    Virtualbox设置共享文件夹的方法
    VS2010自动关闭问题的解决方法
    如何让PHPCms内容页支持JavaScript
    Phpcms V9 调用全站最新文章的代码
    Phpcms V9 调用随机文章的方法
    VMware下Ubuntu不能和主机共享文件夹的解决方法
    Xshell无法连接Ubuntu的解决办法
    Phpcms V9 调用全站文章排行的解决方案
  • 原文地址:https://www.cnblogs.com/shihao/p/2511940.html
Copyright © 2011-2022 走看看