Sql-Server

如何將多個文件組數據文件合併為一個數據文件?

  • April 7, 2022

擁有一個 500gb 的數據庫,其中包含一個由 4 個數據文件組成的文件組。這是由於舊 SAN 卷空間限制在新 SAN 上不再起作用。如果可能,希望將這 4 個數據文件合併為一個數據文件。將這些數據文件合併為單個數據文件有哪些不同的方法?

SQL 2019 CU14

正如評論中提到的,您想要維護多個文件的原因有很多,主要是從性能角度來看

如果您堅持要將所有內容合併到一個文件中,則可以將 DBCC SHRINKFILE 與 EMPTYFILE 選項一起使用。此選項移動指定文件中的所有數據並將其分佈在文件組中的其余文件中。您重複此操作 3 次,對您希望刪除的每個文件執行一次,留下一個包含所有數據的文件。

USE [database_name]
GO
DBCC SHRINKFILE ('file2', EMPTYFILE)
GO
ALTER DATABASE [database_name] REMOVE FILE [file2]
GO

當每個文件被清空時,它會在剩餘的文件中重新分配數據,最終將所有數據推送到最後一個剩餘的文件中。

另一種選擇是使用單個文件創建一個新文件組,並將目前文件組中的所有對象重新建構到新文件組中。

此選項的缺點是您需要雙倍的磁碟空間,直到整個數據移動完成。EMPTYFILE 方法允許您在每個文件被清空時立即恢復空間,從而減少空間需求。

引用自:https://dba.stackexchange.com/questions/310667