數據庫狀態“正在恢復…”
我今天打開了 SSMS,然後去打開我的數據庫 ADMINISTRATOR(在圖片中)但是這個選項不可用:
這是什麼問題,如何取消此還原?
我剛剛添加了一個新數據庫,我沒有對該數據庫執行任何還原操作。
當您關閉/重新啟動電腦/伺服器時,SQL Server Express 實例的服務也將被觸發停止。當服務關閉時,SQL Server 數據庫引擎將嘗試正常關閉數據庫,以確保在系統恢復時能夠及時重新啟動它們。
如果系統在數據庫能夠恢復到一致狀態之前被強制關閉/重新啟動,則在實例恢復時將自動執行恢復。SQL Server 數據庫引擎將找到對應的 *.mdf 和 *.ndf 文件,並與現有的 *.ldf 文件一起嘗試使數據庫重新聯機。
如果由於某種原因數據庫處於(例如)數據庫重新索引任務或重組的中間,那麼將會有很多未完成的事務需要前滾(COMMIT)或回滾(ROLLBACK)。在此過程完成之前,數據庫將被標記為
RECOVERING
。如果由於某種原因數據庫無法進入一致狀態,那麼數據庫將切換到該
RECOVERY PENDING...
狀態。參考: 數據庫狀態(Microsoft | SQL Docs)
看到你的數據庫既不處於狀態
RECOVERING
也不處於RECOVERY PEDNING
狀態,那麼我們可以得出結論,實際RESTORE DATABASE ...
已經被觸發,這導致數據庫顯示的狀態RESTORING...
應該與法語表達式相同RESTAURATION...
。您可以通過發出以下命令來仔細檢查數據庫的狀態:
SELECT sdb.name, sdb.state_desc FROM sys.databases AS sdb WHERE sdb.name = 'ADMINISTRATEUR';
現在,如果由於某種原因數據庫在 SELECT 語句中沒有顯示相同的狀態,那麼您可能只是遇到了一個簡單的Refresh 問題。
解決方案:右鍵點擊 SSMS 中的Bases de données並點擊Refresh
如果查詢返回的數據庫狀態相同,
ERRORLOG
請查看 SQL Server 實例的文件。應該有一個入口,什麼時候RESTORE
開始。如果不查看msdb數據庫中的還原歷史記錄:
SELECT restore_date, destination_database_name AS NewDBName, destination_phys_name AS DestinationPath, database_name AS OrigDBName, server_name AS ServreName, physical_device_name AS PhysicalSourceName, rh.[user_name] AS UserName, 'EOR' AS EOR FROM msdb.dbo.restorehistory rh JOIN msdb.dbo.restorefile rf ON rh.restore_history_id = rf.restore_history_id JOIN msdb.dbo.backupfile bf ON bf.backup_set_id = rh.backup_set_id JOIN msdb.dbo.backupset bs ON bs.backup_set_id = rh.backup_set_id JOIN msdb.dbo.backupmediafamily bmf ON bmf.media_set_id = rh.backup_set_id ORDER BY 2,1
這將顯示還原開始的時間以及(如果幸運的話)開始還原的使用者。
解決方案:通過發出 Dan Guzman 在他的評論中指出的命令來結束數據庫的恢復:
RESTORE DATABASE ADMINISTRATEUR WITH RECOVERY;
可能是以前
RESTORE DATABASE .... WITH NO_REECOVERY
發布的,這不會最終確定RESTORE
. 發出該命令將停止進一步RESTORE DATABASE ...
使用額外的事務日誌備份的能力。
新創建的數據庫處於恢復狀態是不正常的。嘗試執行命令:
RESTORE DATABASE ADMINISTRATEUR WITH RECOVERY;
…來自數據庫上下文中的查詢視窗
master
。