SQL Server 普通表Switch到分区表问题

系统 1844 0
      
        这问题今天纠结了我一天了。
      
    
      
        下面的代码是网上转载来的
      
    
      
        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 不了。

只能出不能进。

SQL Server 普通表Switch到分区表问题


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论