我正在使用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.
那为什么我会收到这个错误?
答案 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
)