今天早上我的数据库进入了可疑模式。我恢复到昨晚的完整备份以使其重新联机。我浏览了错误日志,发现似乎导致可疑模式的最后一个命令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
有没有办法将该表置于单用户模式或其他一些技巧,我不必为整个数据库进入单用户模式?
一种建议是确定导致问题的索引。
然后放下它。如果您认为您将需要此索引,那么我会在删除 DDL 之前编写脚本,删除它,重新创建它,然后重新运行您的 DBCC。由于它
index_id
是 7,我将假设该表可能被过度索引,因此 YMMV 实际重新创建它。如果删除索引不起作用,那么我总是推荐您可以恢复的最后一个已知良好的备份。此外,如果这种情况已经发生了一段时间,备份也将具有损坏的索引,因为完整备份是数据库的逐页副本(+ 一些事务日志)。