日常資料庫維護中,掌握一組高頻實用指令能大幅提升處理效率。本文彙整六大類常用操作技巧,附帶參數說明與實戰範例。
DBCC SHRINKDATABASE (dbname)
-- 重建索引(離線、完整重組)
DBCC DBREINDEX
-- 索引碎片整理(線上、輕量)
DBCC INDEXDEFRAG
-- 收縮整個資料庫檔案群
DBCC SHRINKDB
-- 收縮指定單一檔案(更精確控制)
DBCC SHRINKFILE (logical_filename, target_size_MB)
建議:優先使用 SHRINKFILE 針對記錄檔,避免資料檔收縮產生大量碎片。
現象:安裝 SQL Server 或 Service Pack 時提示「有掛起的安裝操作,請重啟」,但重啟無效。
路徑:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
刪除值:PendingFileRenameOperations
刪除後重新執行安裝程式即可。
情境:資料庫還原至新環境後,資料庫使用者與伺服器登入 SID 不匹配,導致無法登入。
EXEC sp_change_users_login 'update_one', 'new_login_name', 'old_db_user_name';
GO
更多模式:'Report' 查詢孤立使用者、'Auto_Fix' 自動建立登入。
還原前驗證備份檔完整性與可讀性,不實際還原:
RESTORE VERIFYONLY FROM DISK = 'E:\dvbbs.bak';
ALTER DATABASE [dvbbs] SET SINGLE_USER;
GO
DBCC CHECKDB ('dvbbs', REPAIR_ALLOW_DATA_LOSS) WITH TABLOCK;
GO
ALTER DATABASE [dvbbs] SET MULTI_USER;
GO
| 參數 | 修復範圍 | 資料遺失風險 | 適用場景 |
|---|---|---|---|
REPAIR_FAST |
輕微、快速修復(如非叢集索引鍵值修正) | 無 | 輕微不一致、維護窗口極短 |
REPAIR_REBUILD |
含 REPAIR_FAST + 索引重建等耗時操作 | 無 | 索引損壞、頁面鏈結斷裂 |
REPAIR_ALLOW_DATA_LOSS |
含 REPAIR_REBUILD + 配置/取消配置頁面、刪除損壞文字物件 | 高(可能刪除資料) | 嚴重損壞、無備份可用、最後手段 |
DBCC CHECKDB ('dvbbs') WITH NO_INFOMSGS, PHYSICAL_ONLY;
NO_INFOMSGS:抑制資訊性訊息,僅回報錯誤PHYSICAL_ONLY:僅檢查實體頁面結構,跳過邏輯一致性,速度最快SINGLE_USER 防止併發干擾REPAIR_REBUILD,只有在無法解決時才考慮 ALLOW_DATA_LOSS這六組技巧覆蓋了 DBA 日常 80% 的高頻維護場景。關鍵在於理解每個指令的副作用與適用邊界,特別是 DBCC CHECKDB 修復等級的風險分級。建議建立標準化操作手冊,將常用指令參數化、模組化,納入自動化巡檢與應急流程中。