今天一個(gè)同事突然告訴我,以前跑得很正常的一個(gè)SQL語句,執(zhí)行時(shí)突然報(bào)如下錯誤:
消息1222,級別16,狀態(tài)18,第1 行
已超過了鎖請求超時(shí)時(shí)段。
消息8630,級別16,狀態(tài)1,第1 行
內(nèi)部查詢處理器錯誤: 查詢處理器在執(zhí)行過程中遇到意外錯誤。
我執(zhí)行了一下這個(gè)SQL語句,也是報(bào)如上錯誤,感覺有點(diǎn)奇怪,還是第一次遇到這種錯誤。我初步懷疑是SQL中某個(gè)表出現(xiàn)一致性錯誤或分配錯誤等原因造成。于是先用DBCC CHECKTABLE 依次檢查每個(gè)表。DBCC CHECKTABLE用來檢查組成表或索引視圖的所有頁和結(jié)構(gòu)的完整性。結(jié)果還真的發(fā)現(xiàn)其中一個(gè)表有2個(gè)一致性錯誤。如下所示:
pbFabricWip的 DBCC 結(jié)果。
消息 8951,級別 16,狀態(tài) 1,第 1 行
表錯誤: 表 'pbFabricWIP' (ID 1254295528)。數(shù)據(jù)行在索引 'Current_Index' (ID 24)中沒有匹配的索引行。與以下數(shù)據(jù)行匹配的索引行的鍵可能丟失或無效:
消息 8955,級別 16,狀態(tài) 1,第 1 行
數(shù)據(jù)行(1:31937:26)由(HEAP RID = (1:31937:26))標(biāo)識,索引值為 'Current_Department = 'FI' and Current_Operation = '待裝單' and HEAP RID = (1:31937:26)'。
消息 8952,級別 16,狀態(tài) 1,第 1 行
表錯誤: 表 'pbFabricWIP' (ID 1254295528)。索引 'Current_Index' (ID 24)中的索引行與任何數(shù)據(jù)行都不匹配。可能是以下行的多余或無效的鍵:
消息 8956,級別 16,狀態(tài) 1,第 1 行
索引行(1:10613:16)的值為(Current_Department = 'FI' and Current_Operation = '待組板' and HEAP RID = (1:31937:26)),指向由(HEAP RID = (1:31937:26))標(biāo)識的數(shù)據(jù)行。
對象 'pbFabricWIP' 的 7391 頁中有 324059 行。
CHECKTABLE 在表 'pbFabricWIP' (對象 ID 1254295528)中發(fā)現(xiàn) 0 個(gè)分配錯誤和 2 個(gè)一致性錯誤。
對于由 DBCC CHECKTABLE (SystemDB.dbo.pbFabricWIP)發(fā)現(xiàn)的錯誤,repair_rebuild 是最低的修復(fù)級別。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
于是接下來需要修復(fù)這個(gè)表的索引的一致性錯誤。使用DBCC DBREINDEX執(zhí)行后,問題解決。
DBCC DBREINDEX('pbFabricWIP')
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯誤信息,請與系統(tǒng)管理員聯(lián)系。
新聞熱點(diǎn)
疑難解答
圖片精選