目标表分区为空,但alter table switch仍然失败,表明目标分区必须为空

时间:2016-02-06 13:48:59

标签: sql-server database sql-server-2008

我正在使用SQL Server 2008.我有两个相同结构的分区表,分区架构/功能和相同的文件组。

表格结构:

Create table source_table
(
     id int, 
     XmlData xml, 
     Partitionkey ([id]%(100)) As Persisted
)

Create table Destination_table
(
     id int, 
     XmlData xml, 
     Partitionkey ([id]%(100)) As Persisted
)

要求:

Destination_table有记录,但分区23为空。我需要将分区23记录从Source_table移到Destination_table

ALTER TABLE Source_table 
SWITCH partition 23 TO Destination_table partition 23

我收到错误

  

ALTER TABLE SWITCH失败。 Destination_table的目标分区23必须为空。

destination_table的分区23已空。

Select count(1) 
from destination_table 

返回0.

那为什么我会收到这个错误?

2 个答案:

答案 0 :(得分:0)

分区值和分区ID之间存在混淆。分区值为23,但分区ID为24,因为分区值从0到99开始,分区Id为1到100.

因此,分区Id 24适用于移动分区值23:

ALTER TABLE Source_table SWITCH partition 24 TO Destination_table partition 24

答案 1 :(得分:0)

此结构将起作用

Create table source_table
(
     id int, 
     XmlData xml, 
     Partitionkey ((([id] - 1) % (100)) + 1) As Persisted
)

Create table Destination_table
(
     id int, 
     XmlData xml, 
     Partitionkey ((([id] - 1) % (100)) + 1) As Persisted
)