sp_DatabaseRestore 消息 50000
我使用 Ola 的腳本來備份我的數據庫(SQL Server 2017),現在我正在嘗試使用 Brent 的 sp_DatabaseRestore 來恢復它。目前僅嘗試進行完全還原。這是我的程式碼,根據網頁編寫:
EXEC dbo.sp_DatabaseRestore @Database = 'LOTR_recovery', @BackupPathFull = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\OlaBackup\MY-PC\LOTR\FULL\', @ContinueLogs = 0, @RunRecovery = 1;
我將 SP 放在目標數據庫以及 Ola 的腳本上。除了這兩個,數據庫是空的。我收到以下錯誤:
Getting default data drive for @MoveDataDrive Getting default log drive for @MoveLogDrive Setting default data drive for @MoveFilestreamDrive @ExistingDBAction 0 so do nothing @ContinueLogs set to 0 Msg 50000, Level 16, State 1, Procedure dbo.CommandExecute, Line 98 [Batch Start Line 0] The value for the parameter @Command is not supported. Date and time: 2019-01-02 13:18:32 Command: RESTORE DATABASE [LOTR_recovery] WITH RECOVERY Msg 3153, Level 16, State 2, Line 1 The database is already fully recovered. Msg 3013, Level 16, State 1, Line 1 RESTORE DATABASE is terminating abnormally. Outcome: Failed Duration: 00:00:00 Date and time: 2019-01-02 13:18:32
我試圖搜尋 msg 50000 和 @command 但沒有成功。
此外,是否必須在我要還原的目標伺服器上創建 sp_DatabaseRestore 才能正常工作?
我可以在此過程中找到的文件有些不完整,尤其是關於輸入參數的含義。
以下是一些猜測。
查看問題中的輸出消息並檢查實際的儲存過程程式碼,我懷疑您嘗試還原的數據庫已經存在。儲存過程有一個名為的參數
@ExistingDBAction
,它似乎控制如果數據庫已經存在,該過程應該做什麼。此參數的預設值為零 (0),表示什麼都不做。您實際上可以在輸出中看到這一點。
@ExistingDBAction 0 so do nothing
因此,該過程嘗試將備份恢復到現有數據庫並接收
Msg 3153, Level 16, State 2, Line 1 The database is already fully recovered. Msg 3013, Level 16, State 1, Line 1 RESTORE DATABASE is terminating abnormally. Outcome: Failed
該過程顯然接受值 1、2 和 3,但該過程並沒有關於這些參數的確切作用的良好文件。
選項 1 似乎將現有數據庫設置為單使用者模式。選項 2 嘗試終止與現有數據庫的所有現有連接 選項 3 嘗試刪除現有數據庫。
我建議執行該過程並包含
@ExistingDBAction
值為 3 的參數。這應該會終止與數據庫的所有現有連接,然後嘗試刪除它。您還可以在 SQL Server Management Studio debug下執行您的程序。單步執行儲存過程程式碼可能會讓您更深入地了解遇到的問題。
至於你的最後一個問題
必須在我要還原的目標伺服器上創建 sp_DatabaseRestore 才能正常工作嗎?
情況似乎確實如此。
我也想知道您問題中的原始命令。具體來說,您為
@Database = 'LOTR_recovery'
. 根據文件sp_DatabaseRestore
,該參數應指定源數據庫。那是源數據庫的實際名稱。如果要為恢復的數據庫指定與源數據庫不同的名稱,則應包含@RestoreDatabaseName
具有恢復的數據庫名稱值的參數。這些附加點可能感興趣也可能不感興趣。我只是想確保您了解這些參數及其含義。