Sql-Server

沒有足夠的伺服器儲存空間來處理此命令 - RESTORE DATABASE 異常終止

  • October 5, 2016

首先對我看到問題的系統進行一些描述:

我的公司定期從另一個數據庫的備份中恢復一個數據庫,我不會為此討論業務原因。

正在還原的數據庫位於帶有 SP2-CU1 更新的 SQL Server 2014 實例上,該實例在 Windows Server 2012 R2 VM 上執行。

mdf/ndf/ldf 文件所在的驅動器有 1.19TB 可用空間,數據庫佔用大約 863GB。.bak 文件本身被保存在這個驅動器上還有一些其他的數據庫文件留下 244GB 的空閒空間,我認為這足以讓它在沒有任何與工作空間不足有關的問題的情況下進行還原。

在周末,我們從完整備份中進行恢復,並且每隔一天進行一次差異備份。我們有時會看到連續多次恢復失敗,目前我從周一以來已經連續嘗試了 8 或 9 次失敗。這通常發生在從完整備份還原時,這讓我相信這是 SQL Server 在處理大型數據庫時的性能問題,或者它可能對虛擬機很有趣?

我在失敗時看到的錯誤如下。這可能發生在恢復過程中的任何時候,例如最後一次嘗試在恢復完整備份之前完成了 76%。

Msg 3203, Level 16, State 1, Line 2
Read on "\\VM\Backups\TheDatabase.bak" failed: 1130(Not enough server storage is available to process this command.)
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.
Msg 4319, Level 16, State 5, Line 3
A previous restore operation was interrupted and did not complete processing on file 'TheDatabase'. Either restore the backup set that was interrupted or restart the restore sequence.
Msg 3119, Level 16, State 1, Line 3
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 3
RESTORE DATABASE is terminating abnormally.

有一個項目要做分區,所以我們只需要備份和恢復數據庫的熱部分,這應該有望解決這個問題,但我正在尋找任何可能減少這種情況發生或完全阻止這種情況發生的東西. 讓我知道是否需要更多資訊來診斷。

任何幫助將不勝感激!

該錯誤消息會誤導您,它不是在談論您要恢復的機器上的磁碟儲存。

Windows 錯誤消息指出:

1130(沒有足夠的伺服器儲存空間來處理這個命令。)

當您檢查該錯誤消息時,您會注意到這不是恢復操作期間的錯誤,而是在通過網路進行文件複製操作期間的錯誤,如此處所述

這個問題的兩個原因是相關的。首先列出了更常見的原因:打開的文件多於記憶體記憶體管理器可以處理的數量。結果,記憶體管理器已經用盡了可用的分頁池記憶體。備份程序已嘗試備份大小大於備份 API 可以在該版本的作業系統上訪問的文件。這具有相同的結果(即分頁池已耗盡)。注意這第二個問題更可能發生在基於 Microsoft Windows NT 4.0 的電腦上。

根據您在 Windows Server 2003、Microsoft Windows 2000 或 Windows NT 4.0 中遇到的問題,每個問題的解決方法都會有所不同。

或者在這裡

當您從 Windows NT 客戶端訪問 Windows NT 伺服器上的共享項目時,您可能會收到以下錯誤資訊: 沒有足夠的伺服器儲存空間可用於處理此命令。

因此,正如您所說,您可能有足夠的儲存空間來恢復數據庫,但您在通過網路檢索文件時遇到了問題。在任何情況下,您都需要查看一些 SMB 問題

如果您在還原期間遇到磁碟空間問題,錯誤消息將是:

112(磁碟空間不足。)

正如@Nic在評論中正確指出的那樣,您可能應該嘗試使用無緩衝文件副本(使用 ESEUTIL 或 XCOPY)複製備份文件並從那裡恢復以解決或至少隔離問題。

如果您仍然遇到以這種方式複製文件的問題,我不確定它是否仍然適合 dba.se 的範圍。

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