删除此表分区的最佳方法是什么?

Mag*_*ier 2 sql-server partitioning sql-server-2016

我必须将 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
Run Code Online (Sandbox Code Playgroud)

该表包含一个 BLOB(图像)列。该表的总大小约为 25 GB。

我已经通读了如何删除表分区的问题但尽管它已经回答,但没有被接受的答案,而且这些答案并没有完全解决我的问题。

我意识到了ALTER PARTITION FUNCTION MERGE RANGE命令,但我真的不明白会发生什么。数据是否会被合并到现有文件组之一,之后我仍然会有一个分区表?

我是否必须将所有数据复制到具有相同结构的新表中(可能需要很长时间......)?

我将不得不在停机期间执行此操作,因此我需要一个尽可能高效的程序。

Dan*_*man 9

要完全删除表分区,请使用文件组规范而不是分区方案重建所有索引。CREATE INDEXDROP_EXISTING=ON选项一起使用可以有效地做到这一点。

有关语法,请参阅MSDN:CREATE INDEX页面。