Sql-Server

如何修復“無法執行差異備份…目前數據庫備份不存在”?

  • November 6, 2014

我們最近切換到FULL恢復模式,每個週末都進行完整備份,每天進行差異備份。

問題是,差異備份似乎並不總是有效。作業歷史中記錄的錯誤資訊是

作為使用者執行:使用者名。… 9.00.3042.00(32 位)版權所有 (C) Microsoft Corp 1984-2005。版權所有。

開始時間:上午 11:20:12 進度:2013-01-25 11:20:13.90 來源:{450389BA-54C2-4892-9CD0-0126CA9B0ED8} 執行查詢“DECLARE @Guid UNIQUEIDENTIFIER EXECUTE msdb..sp”。:100%完成結束進度錯誤:2013-01-25 11:20:14.40 程式碼:0xC002F210

來源:備份數據庫(差異)執行 SQL 任務

描述:執行查詢“BA​​CKUP DATABASE [MyDatabase] TO DISK = N’E:\Database Backups \MyDatabase_backup_201301251120.diff’ WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N’MyDatabase_backup_20130125112014’, SKIP, REWIND, NOUNLOAD, STATS = 10" 失敗並出現以下錯誤:

$$ MyDatabase $$TO DISK = N’E:\Database Backups\MyDatabase_backup_201301251120.diff’ WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N’MyDatabase_backup_20130125112014’, SKIP, REWIND, NOUNLOAD, STATS = 10" 失敗並出現以下錯誤:**“無法為數據庫“MyDatabase”執行差異備份,因為目前數據庫備份不存在。**通過重新發出 BACKUP DATABASE 執行完整數據庫備份,省略 WITH DIFFERENTIAL 選項。BA…執行包…步驟失敗的。

完整備份作業每次都成功完成,我可以使用此處msdb.dbo.backupset找到的查詢查看它,所以我知道它存在。看起來在重新啟動後,差異備份確實成功完成,直到下一次完整備份。

以下是我的工作經歷:

1/16 - 完全備份 - 成功
1/17 - 差異備份 - 成功
1/18 - 差異備份 - 成功
1/19 - 差異備份 - 成功
1/20 - 完全備份 - 成功
1/21 - 差異備份 - 失敗
1/21 - 差異備份 - 失敗
1/22 - 完全備份 - 成功
1/22 - 差異備份 - 失敗
1/22 - 重啟
1/23 - 差異備份 - 成功
1/23 - 重新啟動
1/24 - 差異備份 - 成功
1/25 - 完全備份 - 成功
1/25 - 差異備份 - 失敗

重新啟動是由於一個不相關的錯誤 where @@SERVERNAMEis null,所以我推遲發布這個問題,直到我發現是否修復@@SERVERNAME了問題,但它沒有,現在我不知道從哪裡開始。

什麼會導致 SQL Server 無法辨識數據庫的完整備份,我該如何解決?

另外我不確定這是否相關,但差異備份似乎相當大,我想知道他們是否正在執行一開始(1/16)而不是最開始的完整數據庫備份的差異最近的完整備份。完整備份約為 260GB,1/23-1/24 的差異分別為 30GB。

這些作業是使用 SQL Server 維護計劃嚮導設置的,我使用的是 SQL Server 2005

維護計劃的 [查看 T-SQL] 按鈕返回以下程式碼:

$$ View T-SQL $$維護計劃的按鈕返回此程式碼: 完全備份:

BACKUP DATABASE [MyDatabase] 
TO DISK = N'E:\Database Backups\MyDatabase_backup_2013_01_25_140607_2543780.bak' 
WITH NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD, STATS = 10, 
   NAME = N'MyDatabase_backup_2013_01_25_140607_2523778'

微分:

BACKUP DATABASE [MyDatabase] 
TO DISK = N'E:\Database Backups\MyDatabase_backup_2013_01_25_140537_4073936.diff' 
WITH DIFFERENTIAL, NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD,  STATS = 10, 
   NAME = N'MyDatabase_backup_2013_01_25_140537_4053934'

這與我的另一個問題 密切相關,但是在聊天中建議我發布一個新問題而不是編輯另一個問題,因為問題不同並且另一個問題的現有答案。

如果某些東西在幕後拍攝快照,破壞了 SQL 差異備份,導致需要在新的差異之前進行完整備份。您可以停止正在拍攝快照的任何內容,或者確保在嘗試進行差異之前進行完整備份。如果您使用 Ola Hallengren 的維護解決方案,它可以在遇到這種情況時自動將差異更改為完整。

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