LDF 遺失時,依活動交易有無分兩類處理:
MYDB)。MYDB (產生新 MDF/LDF)。ALTER DATABASE MYDB SET EMERGENCY。UPDATE sysdatabases SET status = 32768 WHERE name = 'MYDB' (舊版)。sp_dboption 'MYDB', 'single user', 'true'。DBCC CHECKDB('MYDB') 檢查修復。
-- 1. 緊急模式 (僅需 MDF)
ALTER DATABASE SuspectDB SET EMERGENCY;
-- 2. 單一使用者
ALTER DATABASE SuspectDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- 3. 修復 (優先無資料遺失)
DBCC CHECKDB('SuspectDB', REPAIR_REBUILD);
-- 4. 若失敗,允許資料遺失 (最後手段)
DBCC CHECKDB('SuspectDB', REPAIR_ALLOW_DATA_LOSS);
-- 5. 恢復多使用者
ALTER DATABASE SuspectDB SET MULTI_USER;
| 項目 | SQL 2000 | SQL 2005+ |
|---|---|---|
| 系統表直接更新 | 支援 sp_configure 'allow updates' | **移除**,改用 ALTER DATABASE |
| 緊急模式 | UPDATE sysdatabases SET status=-32768 | ALTER DATABASE ... SET EMERGENCY |
| 重建記錄檔 | DBCC REBUILD_LOG | 緊急模式 + CHECKDB 自動重建 |