誤刪 .ldf 導致資料庫進入「置疑」狀態,且無可用備份。資料檔 .mdf 完好。
.mdf 覆蓋新資料庫檔案,重啟服務(資料庫顯示置疑)。DBName 替換為實際名稱):
USE MASTER;
SP_CONFIGURE 'ALLOW UPDATES', 1; RECONFIGURE WITH OVERRIDE;
UPDATE SYSDATABASES SET STATUS = 32768 WHERE NAME = 'DBName'; -- 置疑->緊急模式
SP_DBOPTION 'DBName', 'single user', 'true';
DBCC CHECKDB('DBName');
UPDATE SYSDATABASES SET STATUS = 28 WHERE NAME = 'DBName'; -- 正常狀態
SP_CONFIGURE 'ALLOW UPDATES', 0; RECONFIGURE WITH OVERRIDE;
SP_DBOPTION 'DBName', 'single user', 'false';
.mdf,建立同名資料庫,停止服務,覆回原 .mdf。USE MASTER; SP_CONFIGURE 'ALLOW UPDATES', 1; RECONFIGURE WITH OVERRIDE; UPDATE SYSDATABASES SET STATUS = 32768 WHERE NAME = 'DBName';
SP_DBOPTION 'DBName', 'single user', 'true';
DBCC CHECKDB('DBName'); -- 檢查錯誤
SP_RESETSTATUS 'DBName'; -- 重置狀態
SP_CONFIGURE 'ALLOW UPDATES', 0; RECONFIGURE WITH OVERRIDE;
DBCC CHECKDB 報錯,嘗試 DBCC CHECKDB('DBName', REPAIR_ALLOW_DATA_LOSS),再逐表 DBCC CHECKTABLE。DBCC DBREINDEX 輔助)。DBName_Recovered,用 DTS/SSIS 將搶救出的資料匯入(視圖、SP 需腳本重建)。REPAIR_ALLOW_DATA_LOSS 為最後手段。