簡體   English   中英

從MDF文件還原數據庫,丟失的LDF和數據庫未完全關閉

[英]Restore DB from MDF file, lost LDF and DB was not cleanly shutdown

我的開發數據庫服務器是由某些管理員在不知情的情況下格式化的。 幸運的是,我將.mdf文件保存在其他驅動器中,但.ldf處於其默認位置。 由於我沒有數據庫備份,因此現在只剩下.mdf文件。 我用谷歌搜索,發現了各種技巧來從.mdf文件還原數據庫。 由於沒有徹底關閉數據庫,因此沒有任何技巧可以起作用。 我的機器上安裝了SQL Server 2008 SP2。 我記得丟失的數據庫服務器是SQL Server 2005實例。 請讓我知道如何恢復數據庫。

我嘗試過的技巧:

  1. 我試圖通過從數據庫到附加列表中刪除日志文件項來附加來自SSMS的.mdf。
  2. CREATE DATABASE Monitoring ON (FILENAME = N'D:\\Dump\\Data\\Monitoring.MDF') FOR ATTACH_REBUILD_LOG
  3. sp_attach_single_file_db N'Monitoring', N'D:\\Dump\\Data\\Monitoring_Data.MDF'

在以上所有內容中

DBCC語句不正確。 檢查文檔以獲取正確的DBCC語法和選項。

然后我嘗試了DBCC REBUILD_LOG('Monitoring',N'C:\\Program Files ..MSSQL\\Data\\Monitoring_log.ldf') ,結果是:

DBCC語句不正確。 檢查文檔以獲取正確的DBCC語法和選項。”錯誤。

以下是一些注釋(對於SQL 2000)可能會有所幫助。 我從來沒有親自嘗試過這些。

  1. 在EM中,創建一個與原始數據庫同名的數據庫。
  2. 停止SQL服務(實例)。
  3. 將舊的.MDF復制到新的。
  4. 啟動服務(實例)。
  5. 數據庫將在EM中顯示為可疑。
  6. 啟動查詢管理器。
  7. 連接到正在運行的實例。
  8. 通過執行以下操作,將數據庫置於緊急旁路狀態:

     sp_configure 'allow', 1 go reconfigure with overide. update master..sysdatabases set status=32768 where dbid=5 --check this ID is for your db 
  9. 停止SQL服務(實例)。

  10. 刪除LDF。
  11. 啟動SQL服務(實例)。
  12. 在質量管理中執行以下步驟:

     select dbid, status, name from master..sysdatabases dbcc rebuild_log ('dbname', 'full path and LDF name') 
  13. 通過在QM中執行,從緊急旁路狀態還原DB:

      update master..sysdatabases set status=16 where dbid=5 --Check this ID for your db 
  14. 通過在QM中執行以下操作進行清理:

      sp_configure 'allow', 0 go reconfigure with override 

嘗試這個:

ALTER DATABASE EmpDataBase重建登錄(NAME = $ DatabaseName $,FILENAME = N'$ Path \\ DatabaseName.ldf $')

DBCC CHECKDB

ALTER DATABASE $ DatabaseName $ SET MULTI_USER

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM