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

    只能出不能进。

  • 相关阅读:
    模块之间的消息传递优势与问题
    cp命令
    gimp的python控制台生成UI代码
    three.js(六) 地形法向量生成
    mysql 主从复制配置
    Three.js(九)perlin 2d噪音的生成
    three.js(五) 地形纹理混合
    mongodb 复制
    pycparse python的c语法分析器
    ajax出现 所需的数据还不可用
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/2337298.html
Copyright © 2020-2023  润新知