Sql-Server

DBCC Shrinkfile 在完全備份恢復之後但在差異恢復之前

  • January 22, 2022

我的數據庫完整備份文件大小為 760 GB,差異約為 20 GB,但數據庫大小約為 2TB。因為它是一個生產數據庫,所以只應用最少的停機時間,我想在恢復差異備份之前使用 TRUNCATEONLY 執行 DBCC SHRINKFILE。

請告知我是否可以在完全備份恢復後但在差異備份恢復之前執行帶有 TRUNCATEONLY 的命令 DBCC SHRINKFILE。

請告知我是否可以在完全備份恢復和差異備份恢復之前執行帶有 TRUNCATEONLY 的命令 DBCC SHRINKFILE。

你不能。

你會得到你的數據庫正在恢復中間的錯誤,這是邏輯,你不能對正在恢復的數據庫做任何事情。

在進行最後一次備份之前,您應該分析您的數據庫可用空間,sp_spaceused以了解您是否可以並且應該對該數據庫執行任何操作,可能是您的數據庫處於full恢復模式並且沒有定期進行日誌備份?

收縮數據庫必須在還原備份(任何備份)之後或進行備份之前完成。

您應該恢復備份時的數據文件。

以下步驟可能會為您提供所需的並且不應該影響生產:

  • 在生產數據文件上執行DBCC SHRINKFILE( ’.MDF’, TRUNCATEONLY ) 以臨時釋放文件末尾的任何可用空間(TRUNCATEONLY 不是 IO 密集型,並且不會分割索引)
  • 如果日誌文件也很大,DBCC SHRINKFILE請在活動較少的時候,在進行日誌備份之後對生產日誌文件執行 a。
  • 執行備份後
  • 執行ALTER DATABASE MODIFY FILE以將生產數據文件重新增長回原始大小。

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