解決SQL Server資料庫維護計劃失敗的問題

tolywang發表於2009-09-07


概要
如果資料庫維護計劃中的任何任務失敗或遇到錯誤資訊,則維護計劃作業本身可能顯示為失敗。作業歷史記錄詳細資訊顯示以下錯誤資訊:

sqlmaint.exe failed.[SQLSTATE 42000] (Error 22029).The step failed.
但是,這不一定指示整個維護計劃都失敗。維護計劃作業顯示失敗狀態,以便引發一個標誌,指示讓使用者注意的維護計劃中的某一任務。

此型別的行為很常見,因為可能會遇到需要使用者干預來解決的錯誤。只要某一維護計劃作業失敗,您就必須檢查計劃歷史記錄以檢視錯誤情況,然後採取適當的

措施來解決該問題。
更多資訊
為了找出與導致作業失敗的原因有關的特定任務和錯誤資訊,您需要檢查資料庫維護計劃歷史記錄。在資料庫維護計劃歷史記錄中,您可以獲取與該維護計劃正

執行的每一任務有關的詳細資訊。使用以下步驟在 SQL Server 企業管理器中找到這些資訊:
1. 定位到資料庫維護計劃,然後展開它。
2. 右鍵單擊具有失敗的相應作業的資料庫維護計劃。
3. 單擊資料庫維護計劃歷史記錄。
4. 隨即開啟一個視窗,視窗中包含與維護計劃中執行的每一任務有關的詳細資訊。為在各日期執行的每一任務提供歷史記錄列表,該列表還指示單獨任務的失敗

或成功狀態。如果您雙擊一個失敗的任務,則顯示指示產生的任何錯誤資訊的資訊以及與任務失敗的原因有關的資訊。
5. 此時採取必要的措施解決指示的具體問題。
典型的例子是設定維護計劃來備份資料庫和檢查完整性。例如,假定某一完整性檢查任務在一個或多個資料庫中遇到資料庫完整性錯誤。該任務引發一個錯誤信

息。維護計劃繼續執行該計劃中的其餘任務。在維護計劃完成後,SQLAgent 中的相應作業被設定為"failed"(失敗)狀態。維護計劃歷史記錄的檢查指示哪一數

據庫完整性檢查詢到了完整性錯誤或失敗以及相應的錯誤資訊。然後您需要採取措施並執行適當的 DBCC CHECKDB 步驟來解決該問題。有關 DBCC CHECKDB 的更

多資訊,請參見 SQL Server 聯機圖書中的"DBCC CHECKDB"主題。

您還可以將詳細的維護計劃資訊寫入一個檔案。若要將詳細的維護計劃資訊寫入一個檔案,請使用以下步驟:
1. 在 SQL Server 企業管理器中,定位到"資料庫維護計劃"。選擇所需計劃,然後雙擊該計劃。
2. 單擊報告選項卡。在報告對話方塊中,您可以選擇將報告寫入指定目錄中的一個文字檔案上。該報告包含與維護計劃執行的步驟有關的細節,並且包括任何錯誤

資訊。您還可以將該報告透過電子郵件傳送到指定的操作員處,以進行常規檢查。
3. 如果不使用文字報告,則您還可以透過本伺服器上的歷史記錄選項將輸出傳送到一個 SQL Server 表中。

有關為資料庫維護計劃設定這些選項的細節的更多資訊,請參見 SQL Server 聯機圖書中的"Database Maintenance Plan, Reporting Tab"(資料庫維護計劃,

報告選項卡)主題。 
如果您需要更深入的疑難解答,則可以啟動 SQL Server Agent,使用詳細日誌記錄從命令提示處執行。
 

今天發現維護計劃失敗,是因為
------------------------------------------------------------------------------
正在為表“tbs_d_supp”重建索引
[Microsoft SQL-DMO (ODBC SQLState: HY000)] 錯誤 3624: [Microsoft][ODBC SQL Server Driver][SQL Server]
[Microsoft][ODBC SQL Server Driver][SQL Server]Location: recbase.cpp:1374
Expression: m_nVars > 0
SPID: 56
Process ID: 1748

** 執行時間: 0 小時,33 分鐘,21 秒 **

結束維護計劃“資料庫維護計劃1”(在 2005-11-22 8:09:07 上)
SQLMAINT.EXE 程式退出程式碼: 1 (失敗)
-------------------------------------------------------------------------------


而這個錯誤是因為tbs_d_supp這個表的一致性錯誤引起的
----------------------------
dbcc checktable('tbs_d_supp')
----------------------------
伺服器: 訊息 8928,級別 16,狀態 1,行 1
物件 ID 426848983,索引 ID 0: 未能處理頁 (1:618084)。詳細資訊請參閱其它錯誤。
伺服器: 訊息 8944,級別 16,狀態 1,行 1
表錯誤: 物件 ID 426848983,索引 ID 0,頁 (1:618084),行 83。測試(nVarCols && (hdr->r_tagA & VARIABLE_COLUMNS))失敗。值為 0 和 32。
'tbs_d_supp' 的 DBCC 結果。
物件 'tbs_d_supp' 有 503837 行,這些行位於 5617 頁中。
CHECKTABLE 發現了 0 個分配錯誤和 2 個一致性錯誤(在表 'tbs_d_supp' 中,該表的物件 ID 為 426848983)。
repair_allow_data_loss 是最低的修復級別(對於由 DBCC CHECKTABLE (enjoy_store.dbo.tbs_d_supp ) 發現的錯誤而言)。
---------------------------------------------------------------------------------------

 

另外如果維護計劃選擇了"檢查資料庫完整性--&gt嘗試修復所有小問題"
則執行是需要在單使用者模式下,如果有人連線著資料庫,有可能使維護計劃失敗。
------------------------------------------------------------------------------

Microsoft (R) SQLMaint 實用工具(Unicode),版本 登入到 SQL Server“GHSS_DSRV01”以“NT AUTHORITY\SYSTEM”(受信任)身份
開始維護計劃“資料庫維護計劃1”(在 2005-11-22 7:36:18 上)
[Microsoft SQL-DMO (ODBC SQLState: 42000)] 錯誤 5070: [Microsoft][ODBC SQL Server Driver][SQL Server]如果其他使用者正使用資料庫 'enjoy_store'

,則資料庫狀態不能更改
[Microsoft][ODBC SQL Server Driver][SQL Server]ALTER DATABASE 語句失敗。
[Microsoft][ODBC SQL Server Driver][SQL Server]sp_dboption 命令失敗。
[1] 資料庫 enjoy_store: 檢查資料和索引連結...
[Microsoft SQL-DMO (ODBC SQLState: 42000)] 錯誤 7919: [Microsoft][ODBC SQL Server Driver][SQL Server]未處理修復語句。資料庫需要處於單使用者模

式下。

發現下列錯誤:

[Microsoft][ODBC SQL Server Driver][SQL Server]未處理修復語句。資料庫需要處於單使用者模式下。
** 執行時間: 0 小時,0 分鐘,1 秒 **

結束維護計劃“資料庫維護計劃1”(在 2005-11-22 8:09:12 上)
SQLMAINT.EXE 程式退出程式碼: 1 (失敗)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-615561/,如需轉載,請註明出處,否則將追究法律責任。

相關文章