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 不了。

    只能出不能进。

  • 相关阅读:
    swift运算符使用_02_swift基本数据类型
    OSChina-01Swift终端命令行
    开源框架汇总-01-第三方
    修改App名称-01-修改项目中APP名
    NSAttributedString.h 中文本属性key的说明-06
    SQLite总结-05
    Linux系统判断gcc是否安装
    翻译文件结构规范
    并行SVN版本控制
    页面设计规范
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/2337298.html
Copyright © 2011-2022 走看看