資料庫因斷電、硬體故障導致索引損壞、查詢緩慢或資料遺失時,可用 T-SQL 執行修復。操作前必須斷開所有使用者連線。
USE MASTER; GO
-- 1. 設為單一使用者模式,阻塞新連線
EXEC sp_dboption 'YourDatabase', 'single user', 'true'; GO
-- 2. 執行資料庫層級修復 (重建索引、修復配頁)
DBCC CHECKDB('YourDatabase', REPAIR_REBUILD); GO
-- 3. 對每個資料表執行修復
USE YourDatabase; GO
EXEC sp_msforeachtable 'DBCC CHECKTABLE(''?'', REPAIR_REBUILD)'; GO
-- 4. 恢復多使用者模式
USE MASTER; GO
EXEC sp_dboption 'YourDatabase', 'single user', 'false'; GO
REPAIR_REBUILD:執行無資料遺失修復 (重建索引、修復頁面);較安全。REPAIR_ALLOW_DATA_LOSS:允許資料遺失的極端修復 (刪除損壞頁、資料列);最後手段,務必先完整備份。sp_msforeachtable:未文件化預存程序,遍歷所有使用者資料表。DBCC CHECKDB('YourDatabase') NO_INFOMSGS 僅檢查不修復,評估損壞程度。REPAIR_REBUILD 通常足夠。