Sql-Server
sql server 2008 r2 DBCC 檢查表錯誤
今天早上我的數據庫進入了可疑模式。我恢復到昨晚的完整備份以使其重新聯機。我瀏覽了錯誤日誌,發現似乎導致可疑模式的最後一個命令
MERGE
位於特定表上。我跑DBCC CHECKTABLE
在桌子上,得到了以下資訊Msg 2511, Level 16, State 1, Line 1 Table error: Object ID 1253579504, index ID 7, partition ID 72057594230341632, alloc unit ID 72057594364887040 (type In-row data). Keys out of order on page (1:14254237), slots 184 and 185. There are 366539002 rows in 3425599 pages for object "PJM_Prices". CHECKTABLE found 0 allocation errors and 1 consistency errors in table 'PJM_Prices' (object ID 1253579504). repair_rebuild is the minimum repair level for the errors found by DBCC CHECKTABLE (CaisoAnalyzer.dbo.PJM_Prices). DBCC execution completed. If DBCC printed error messages, contact your system administrator.
在
ERRORLOG
Internal database snapshot has split point LSN = 001935ad:00001bf6:0001 and first LSN = 001935ad:00001bf5:0001
有沒有辦法將該表置於單使用者模式或其他一些技巧,我不必為整個數據庫進入單使用者模式?
一種建議是確定導致問題的索引。
select o.name as tablename, i.name as indexname from sys.objects o join sys.indexes i on o.object_id = i.object_id where i.index_id = 7 and o.object_id = 1253579504
然後放下它。如果您認為您將需要此索引,那麼我會在刪除 DDL 之前編寫腳本,刪除它,重新創建它,然後重新執行您的 DBCC。由於它
index_id
是 7,我將假設該表可能被過度索引,因此 YMMV 實際重新創建它。如果刪除索引不起作用,那麼我總是推薦您可以恢復的最後一個已知良好的備份。此外,如果這種情況已經發生了一段時間,備份也將具有損壞的索引,因為完整備份是數據庫的逐頁副本(+ 一些事務日誌)。