首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL 資料庫維護失敗排查實戰筆記

     編輯:MySQL 資料庫相關知識

第一現場:錯誤日誌

  1. SQL Server Agent 作業歷程:展開維護計畫 → 檢視每步驟的「訊息」欄位,記錄錯誤號、嚴重等級、行號。
  2. SQL Profiler 追蹤:篩選 ErrorLog、Exception 事件,重現失敗時刻的完整批次語句。

核心 DBCC 指令工具箱

指令用途典型參數
DBCC DBREINDEX 重建索引,消除碎片 DBCC DBREINDEX(N'dbo.tblSiteWantProd', '', 90)
DBCC CHECKIDENT 檢查/重置身分識別欄位 DBCC CHECKIDENT('tblSiteWantProd')
DBCC CHECKDB 全資料庫一致性檢查 DBCC CHECKDB WITH NO_INFOMSGS, ALL_ERRORMSGS
DBCC CHECKTABLE 單表一致性檢查 DBCC CHECKTABLE('tblSiteWantProd')

經典錯誤訊息解讀

CREATE UNIQUE INDEX terminated because a duplicate key was found
for index ID %1!. The most significant primary key is '%2!'.
  • %1:當前表的第 N 個索引(從 1 起算,1 通常為叢集索引)。
  • %2:重複的鍵值內容。

應對:先用 SELECT * FROM tbl WHERE PK = '重複值' 確認重複筆數 → 決定保留哪一筆 → 刪除其餘 → 重建索引。

維護計畫優化建議

  • 拆分「檢查完整性」與「重建索引」為不同排程,避免長時間鎖表衝突業務。
  • 啟用 WITH (ONLINE = ON)(Enterprise 版)重建索引不鎖表。
  • 設定作業失敗時發送郵件通知,並記錄輸出到檔案 $(ESCAPE_SQUOTE(DIR))\LOG\Maint_$(ESCAPE_SQUOTE(STRTDT))_$(ESCAPE_SQUOTE(STRTTM)).txt。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved