拥有一个 500gb 的数据库,其中包含一个由 4 个数据文件组成的文件组。这是由于旧 SAN 卷空间限制在新 SAN 上不再起作用。如果可能,希望将这 4 个数据文件合并为一个数据文件。将这些数据文件合并为单个数据文件有哪些不同的方法?
SQL 2019 CU14
拥有一个 500gb 的数据库,其中包含一个由 4 个数据文件组成的文件组。这是由于旧 SAN 卷空间限制在新 SAN 上不再起作用。如果可能,希望将这 4 个数据文件合并为一个数据文件。将这些数据文件合并为单个数据文件有哪些不同的方法?
SQL 2019 CU14
正如评论中提到的,您想要维护多个文件的原因有很多,主要是从性能角度来看。
如果您坚持要将所有内容合并到一个文件中,则可以将 DBCC SHRINKFILE 与 EMPTYFILE 选项一起使用。此选项移动指定文件中的所有数据并将其分布在文件组中的其余文件中。您重复此操作 3 次,对您希望删除的每个文件执行一次,留下一个包含所有数据的文件。
当每个文件被清空时,它会在剩余的文件中重新分配数据,最终将所有数据推送到最后一个剩余的文件中。
另一种选择是使用单个文件创建一个新文件组,并将当前文件组中的所有对象重新构建到新文件组中。
此选项的缺点是您需要双倍的磁盘空间,直到整个数据移动完成。EMPTYFILE 方法允许您在每个文件被清空时立即恢复空间,从而减少空间需求。