MS SQL SERVER 當資料庫混損 而沒有備份時候的救援方式


最近發生一件鳥事
由於下面的工程師在安裝完資料庫後 沒有設定交易紀錄備份
因此LDF磁碟被寫滿 造成資料庫異常
重啟後 發現資料庫處於「正在還原」狀態下

如果你跟我一樣綏  可以試試看以下步驟 進行修復

步驟如下
1. 由於原資料庫MDFLDF正在還原狀態咬住
,所以先把資料庫暫時停用,停用後 把該資料庫MDFLDF先複製到別的地方
2.重新於資料庫上建立同名之新的資料庫離線
USE master
GO
ALTER DATABASE [資料庫名稱]
SET OFFLINE;
GO
3.將有問題之資料取代新的資料庫上線
--步驟03. 將先前的資料檔案覆蓋掉此新建立的資料庫檔案。
--步驟04. 若嘗試執行重新上線此資料庫,例如:
USE master
GO
ALTER DATABASE [資料庫名稱]
SET ONLINE;
GO
4.切成緊急模式切換單人模式進行DBCC修復
ALTER DATABASE [資料庫名稱]
SET SINGLE_USER
SET EMERGENCY;
GO
DBCC CHECKDB ( [資料庫名稱] , REPAIR_ALLOW_DATA_LOSS) ;
GO

5.完成後進行檢查
use master
GO
DBCC CHECKDB( [資料庫名稱])
GO
6.如果沒有好 可以在用以下指令 在修復一次
ALTER DATABASE [資料庫名稱]
WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKDB ( [資料庫名稱] , REPAIR_ALLOW_DATA_LOSS) ;
GO

7.完成後切回多人模式
ALTER DATABASE [資料庫名稱]
SET MULTI_USER;
GO

以上 God bliss you!

See also :
  1. 交易記錄檔(transaction log)意外損毀,僅剩下資料檔案可用為例。錯誤訊息:訊息 1813,層級 16,狀態 2 ... 檔案啟動錯誤。實體檔案名稱 "*.ldf" 可能不正確。
  2. [SQL SERVER][Maintain]挽救毀損資料庫
  3. 資料庫毀損 123一事~整理筆記

留言

這個網誌中的熱門文章

Office 2021 離線安裝封裝與KMS啟動步驟

Ollama使用心得與模型導入教學

ARC下NSMutableDictionary 無法使用retainCount