Sql-Server

恢復到新數據庫將舊數據庫恢復

  • December 3, 2019

下圖說明了一切。我需要從兩週前的備份中獲取一些數據,所以我恢復到一個名為 ETLFix 的新數據庫。但是,當我開始恢復生產數據庫時,ETL 也進入了恢復狀態。

我懷疑這是因為我從兩週前的 .bak 中恢復了 ETLFix,並且發出一條通知說 ETL 的備份鏈已損壞。另一種說法是,ELT 認為它處於恢復狀態,因為它了解到讀取了舊的 .bak。

如何讓我的 ETL 生產數據庫退出恢復,並防止這種情況在未來發生?

BothDbsInRestore

試試這個說法:

RESTORE DATABASE ETL WITH RECOVERY

由於這是您的生產環境,因此在進行盡職調查時要非常小心,以確保您沒有造成無法輕易修復的傷害。

此外,檢查選項選項卡以查看是否選中了“在還原之前進行尾日誌備份”。如果已選中,則取消選中它。從 2016 年開始(我認為),如果您要通過現有數據庫進行恢復,那麼 SSMS 預設會進行尾日誌備份。在我剛才的快速測試中(從現有數據庫的備份中恢復為新名稱),SSMS 仍然預設在恢復之前進行尾日誌備份。養成始終檢查“選項”選項卡的習慣。

希望有幫助。

嘗試執行這兩個查詢:

SELECT MAX(restore_date) AS restore_date FROM msdb..restorehistory WHERE destination_database_name = 'ETLFix'

SELECT [database_name], backup_start_date FROM msdb..backupset WHERE database_name = 'ETL' AND type = 'L' AND is_force_offline = 1

如果第二個查詢在第一個查詢的 restore_date 值之前返回帶有 backup_start_date 的行,這表明執行了尾日誌備份,很可能是由於未取消選中 GUI 中的選項造成的。這就是導致您的數據庫離線的原因。

要使其聯機,請執行:

RESTORE DATABASE ETL WITH RECOVERY

展望未來,您應該嘗試使用腳本而不是 GUI 來恢復數據庫,以確保您將各種設置設置為您想要的,或者您可以使用 GUI,但首先編寫操作腳本並查看腳本由 SSMS 生成,以確保它正在執行您想要的正確操作。

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