誤刪或損壞交易記錄檔(.ldf),導致資料庫進入「置疑」狀態,無法正常存取。資料珍貴,必須搶救。
USE MASTER;
GO
SP_CONFIGURE 'ALLOW UPDATES', 1;
RECONFIGURE WITH OVERRIDE;
GO
UPDATE SYSDATABASES SET STATUS = 32768 WHERE NAME = '置疑資料庫名';
GO
SP_DBOPTION '置疑資料庫名', 'single user', 'true';
GO
DBCC CHECKDB('置疑資料庫名');
GO
UPDATE SYSDATABASES SET STATUS = 28 WHERE NAME = '置疑資料庫名';
GO
SP_CONFIGURE 'ALLOW UPDATES', 0;
RECONFIGURE WITH OVERRIDE;
GO
SP_DBOPTION '置疑資料庫名', 'single user', 'false';
GO
status = 32768)DBCC CHECKDB 修復-- 1. 啟用系統表更新
USE MASTER;
GO
SP_CONFIGURE 'allow updates', 1;
RECONFIGURE WITH OVERRIDE;
GO
-- 2. 設定緊急模式
UPDATE SYSDATABASES SET STATUS = 32768 WHERE NAME = 'XXX';
GO
-- 重啟服務後...
-- 3. 單用戶模式
SP_DBOPTION 'XXX', 'single user', 'true';
GO
-- 4. 檢查修復
DBCC CHECKDB('XXX');
GO
-- 5. 重置狀態
EXEC SP_RESETSTATUS 'XXX';
GO
SP_CONFIGURE 'allow updates', 0;
RECONFIGURE WITH OVERRIDE;
GO
-- 檢查掃描密度
DECLARE @table_id INT = OBJECT_ID('表名');
DBCC SHOWCONTIG(@table_id);
-- 重建指定索引
DBCC DBREINDEX('表名', 'PK_索引名', 100);
-- 重建所有索引
DBCC DBREINDEX('表名', '', 100);
DBCC CHECKDB 若報錯,依錯誤訊息處理,或嘗試 REPAIR_ALLOW_DATA_LOSS(最後手段)無記錄檔恢復屬高風險操作,生產環境請在 DBA 指導下進行,並確保有完整備份策略避免再次發生。