当列存储 table 在同一数据库中时更改分区函数和方案
Alter partition function and scheme when a columnstore table is in same database
我有一个 table,它每周进行分区,并定义分区函数和方案。最重要的是 table 具有具有相同每周分区方案的聚簇列存储索引。
所以现在我必须在分区函数和方案中添加更多范围。失败并显示错误消息“无法更改具有非空分区的分区函数.........”,其中数据文件只有 4KB 且未加载任何数据。
从 2014 年的 post 之一,我开始知道我们需要禁用聚簇索引并更改分区方案并再次启用。
请帮忙解决这个问题。我使用的是 2016 sql 和企业版。提前致谢。
对于列存储索引,您需要清空要拆分的分区。可以通过以下方式完成:
- 将数据移动到其他分区(通过更新其分区键)
- 改变分区模式(使用 NEXT USED 子句)和分区函数(使用 SPLIT RANGE 子句)
- 正在将数据移回正确的分区。
以上可以在一笔交易中完成。
为了将来,(假设数据按日期分区)建议有几个空分区,这样维护task/job可以自动拆分分区(并为将来创建几个新分区句点)没有任何问题。
或者,您可以将 ALTER TABLE 与 SWITCH PARTITION 子句一起使用,但这种方法效率较低。 SWITCH PARTITION主要用于快速删除旧分区。
我有一个 table,它每周进行分区,并定义分区函数和方案。最重要的是 table 具有具有相同每周分区方案的聚簇列存储索引。
所以现在我必须在分区函数和方案中添加更多范围。失败并显示错误消息“无法更改具有非空分区的分区函数.........”,其中数据文件只有 4KB 且未加载任何数据。
从 2014 年的 post 之一,我开始知道我们需要禁用聚簇索引并更改分区方案并再次启用。
请帮忙解决这个问题。我使用的是 2016 sql 和企业版。提前致谢。
对于列存储索引,您需要清空要拆分的分区。可以通过以下方式完成:
- 将数据移动到其他分区(通过更新其分区键)
- 改变分区模式(使用 NEXT USED 子句)和分区函数(使用 SPLIT RANGE 子句)
- 正在将数据移回正确的分区。
以上可以在一笔交易中完成。
为了将来,(假设数据按日期分区)建议有几个空分区,这样维护task/job可以自动拆分分区(并为将来创建几个新分区句点)没有任何问题。
或者,您可以将 ALTER TABLE 与 SWITCH PARTITION 子句一起使用,但这种方法效率较低。 SWITCH PARTITION主要用于快速删除旧分区。