zoukankan      html  css  js  c++  java
  • SQL Server 普通表Switch到分区表问题

    这问题今天纠结了我一天了。
    下面的代码是网上转载来的
    create partition function PF_Orders_OrderDateRange(datetime)
    as
    range right for values (
    '1997-01-01',
    '1998-01-01',
    '1999-01-01'
    )
    go
    -- 创建分区方案
    create partition scheme PS_Orders
    as
    partition PF_Orders_OrderDateRange
    to ([primary], [primary], [primary], [primary])
    go
    -- 创建分区表
    sp_rename 'dbo.Orders','Orders_From_SQL2000_Northwind'

    create table dbo.Orders
    (
    OrderID int not null
    ,CustomerID varchar(10) not null
    ,EmployeeID int not null
    ,OrderDate datetime not null
    )
    on PS_Orders(OrderDate)
    go
    -- 创建聚集分区索引
    create clustered index IXC_Orders_OrderDate on dbo.Orders(OrderDate)
    go
    -- 为分区表设置主键
    alter table dbo.Orders add constraint PK_Orders
    primary key (OrderID, CustomerID, OrderDate)
    go
    -- 导入数据到分区表
    insert into dbo.Orders
    select OrderID, CustomerID, EmployeeID, OrderDate
    from dbo.Orders_From_SQL2000_Northwind --(注:数据来源于 SQL Server 2000 示例数据库)
    go
    -- 查看分区表每个分区的数据分布情况
    select partition = $partition.PF_Orders_OrderDateRange(OrderDate)
    ,rows = count(*)
    ,minval = min(OrderDate)
    ,maxval = max(OrderDate)
    from dbo.Orders
    group by $partition.PF_Orders_OrderDateRange(OrderDate)
    order by partition
    GO

    create table dbo.Orders_1998
    (
    OrderID int not null
    ,CustomerID varchar(10) not null
    ,EmployeeID int not null
    ,OrderDate datetime not null
    ) on [primary]
    go
    create clustered index IXC_Orders1998_OrderDate on dbo.Orders_1998(OrderDate)
    go
    alter table dbo.Orders_1998 add constraint PK_Orders_1998
    primary key nonclustered (OrderID, CustomerID, OrderDate)
    go
    alter table dbo.Orders switch partition 3 to dbo.Orders_1998
    go
    alter table dbo.Orders_1998 add constraint CK_Orders1998_OrderDate
    check (OrderDate>='1998-01-01' and OrderDate<'1999-01-01')
    go
    alter table dbo.Orders_1998 switch to dbo.Orders partition 3

    这段代码是没问题的,普通表能成功的switch 分区表。但是有一点要注意:分区字段为 not null。如果你改为null 不好意思 switch 不了。

    只能出不能进。

  • 相关阅读:
    微软 安全用户教育影片 有MM 哦
    数据字典是什么?
    调用Object.GetHashCode的缺省实现
    CCharp 中委托和事件的机制和应用
    C#.NET 中的类型转换
    解决在全文搜索中搜索中文字符
    ADO.NET 获取大型 数据
    Realize the Potential of Office 2003 by Creating Smart Tags in Managed Code
    MSDN 智能客户端开发人员中心
    ADO.Net 缓冲 插入大型数据
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/2337298.html
Copyright © 2011-2022 走看看