我必须将 Sql Server 2008 R2 中的分区表更改为普通表,以使我的数据库与 Sql Server 2016 标准版兼容。
实际上,该表有 5 个分区,行数如下:
> boundary, rows
2009-01-01 00:00:00.000 419
2010-01-01 00:00:00.000 386031
2011-01-01 00:00:00.000 1307990
2012-01-01 00:00:00.000 673183
NULL 9743057
该表包含一个 BLOB(图像)列。该表的总大小约为 25 GB。
我已经通读了如何删除表分区这个问题,但尽管它已经回答了,但没有被接受的答案,而且答案并没有完全解决我的问题。
我实现了ALTER PARTITION FUNCTION MERGE RANGE命令,但我不太明白会发生什么。数据是否会合并到现有文件组之一,之后我仍然会有一个分区表?
我是否必须将所有数据复制到具有相同结构的新表中(可能需要相当长的时间......)?
我将不得不在停机期间执行此操作,因此我需要一个尽可能高效的过程。
要完全删除表分区,请使用文件组规范而不是分区方案重建所有索引。
CREATE INDEX
与选项一起使用DROP_EXISTING=ON
可以有效地做到这一点。请参阅MSDN:
CREATE INDEX
语法页面。