当列存储表位于同一数据库中时,更改分区函数和方案

时间:2018-01-02 20:15:00

标签: sql-server partitioning sql-server-2016 clustered-index columnstore

我有一个表,每周用分区函数和方案定义分区。最重要的是这个表具有聚集的列存储索引,具有相同的每周分区方案。

所以现在我必须在分区函数和方案中添加更多范围。哪个失败,错误说“无法改变具有非空分区的分区功能.........”,数据文件中只有4KB,没有加载数据。

从2014年Ssms的一篇文章中,我发现我们需要禁用聚簇索引并更改分区方案并再次启用。

请帮助解决此问题。我正在使用2016 sql和企业版。提前致谢。

1 个答案:

答案 0 :(得分:2)

对于columnstore index,您需要清空要拆分的分区。这可以通过以下方式完成:

  • 将数据移动到其他分区(通过更新其分区键)
  • 更改分区架构(使用NEXT USED子句)和分区功能(使用SPLIT RANGE子句)
  • 将数据移回正确的分区。

以上可以在一次交易中完成。

对于未来,(假设数据按日期分段),建议有一些空分区,因此维护任务/作业可以自动拆分分区(并为将来创建一些新分区)期间)没有任何问题。

或者,您可以将ALTER TABLE与SWITCH PARTITION子句一起使用,但该方法的效率较低。 SWITCH PARTITION主要用于快速删除旧分区。