Sql-Server

數據庫狀態“正在恢復…”

  • May 4, 2021

我今天打開了 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

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