由于源表和目标表的文件组不匹配,交换机分区失败

时间:2017-07-14 19:37:44

标签: sql sql-server sql-server-2014 partitioning sql-server-2016

我正在尝试在其中一个表上实现切换分区,并确保分区函数,方案,文件组工作正常。但是当我运行以下命令时,我收到文件组错误。有人可以分享你对此的看法。

命令: -

ALTER TABLE XYZ SWITCH PARTITION  5 TO ABC PARTITION  5;

错误: -

  

ALTER TABLE SWITCH语句失败。表'XYZ'在文件组'PRIMARY'中,表'ABC'的分区5在文件组'FG_5'中。

3 个答案:

答案 0 :(得分:0)

可能会在现有表上创建某些群集索引。因此,在可能不同的表上创建集群索引时会提到文件组。或者如果您可以删除ABC表并再次创建并尝试查询。

查询以检查表和索引名称的文件组。

select f.name,o.name,i.name from sys.indexes i inner join  sys.filegroups f on i.data_space_id=f.data_space_id
 inner join sys.all_objects o on o.object_id= i.object_id 
 where o.name in ('ABC','XYZ')

我不会说这是解决方案,但这有助于解决问题。

答案 1 :(得分:0)

错误表示源表和目标表不是存储对齐的。运行以下查询以确保源和目标文件组在表和索引中都相同:

StringBuilder sb = new StringBuilder();
sb.append("valueOne"); // adresse One
sb.append("valueTwo"); // adresse One

答案 2 :(得分:-1)

检查您的分区方案。两个表应位于同一文件组中。您应该在分区方案中包含PRIMARY或将SOURCE表移动到目标表将使用的目标FILEGROUPS。