Sql-Server

還原備份失敗 - 磁碟空間不足

  • May 6, 2019

我有一個大約 6Gb 的備份。它是原始文件的“輕量級”備份(清除了日誌表),大約為 14Gb。

我嘗試在我的 SQL Express 本地伺服器上恢復備份。它失敗並顯示類似 : 的消息System.Data.SqlClient.Error: insufficient disk space。它要求 227,891,019,776 字節,這絕對是瘋狂的,幾乎和我的整個硬碟一樣大。

正如在其他網站上發現的那樣,我嘗試了RESTORE FILELISTONLY FROM DISK = 'backupfile.bak'.

數據文件(列Size)大小為 6,888,226,816,但日誌文件為 221,006,987,264。該列BackupSizeInBytes返回 6,259,736,576 和 0。

所以,如果我理解正確,restore 檢查我是否有足夠的空間來恢復日誌文件的“理論”大小,然後再繼續,而不考慮實際的日誌文件大小?

我怎樣才能繞過它?獲得備份有點困難,所以如果我可以解決我的問題而不必返回生產伺服器,那就太好了。

謝謝 !

哦,順便說一句,我使用的是 SQL Server 2008 R2 Express。

請注意,備份大小不包括空頁,但是當您實際執行還原時,數據和日誌文件超過 200 GB,因為它必須完全還原源系統的內容(包括 200+ GB 的日誌文件,不管它有多滿)。

如果您不想冒數據失去的風險,您需要在源頭進行更正(例如將日誌文件縮小到合理的值),進行另一個完整備份,然後恢復它。我不確定我是否理解為什麼很難獲得備份 - 這是一個非常標準的操作,並且應該是您為託管 SQL Server 付費的任何人提供的服務。

您還應該將源數據庫修復為 (a) 處於正確的恢復模式或 (b) 更頻繁地進行日誌備份。您的日誌文件很可笑,因為您處於完全恢復狀態並且從不進行日誌備份。如果您需要時間點恢復,請開始備份您的日誌。如果你不這樣做,切換到簡單。如果您正確配置了日誌文件,它應該會自行管理。如果你不這樣做,那麼當它變成這樣時,收縮應該是一次性操作,然後你應該修復配置,這樣你下週就不會再這樣做了……

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