如何修復“無法執行差異備份…目前數據庫備份不存在”?
我們最近切換到
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 任務
描述:執行查詢“BACKUP 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
@@SERVERNAME
isnull
,所以我推遲發布這個問題,直到我發現是否修復@@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 的維護解決方案,它可以在遇到這種情況時自動將差異更改為完整。