执行不带修复子句的 DBCC CHECKDB 以确定损坏的程度。然后,执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 以更正损坏。如果问题仍存在,则除去并重新创建该索引(如下所示),或与您的主要支持提供者联系。重要 如果执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 未更正索引问题,或不确定带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 对数据有何影响,则请与您的主要支持提供者联系。
除去并重新创建索引: 记录错误文本中指定的索引页和索引 ID 的值。
确定哪个表和索引对应于该索引页号。
记下对象 ID。
如果有错的对象是系统表(对象 ID 小于 100),则无法除去该索引。执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 或从已知的清洁备份还原数据库。如果对象 ID 大于 100,则使用第 1 步中获得的表名和索引名称除去并重新创建该索引。在大多数情况下,这将清除该错误。
在受影响的数据库上执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB,以验证已解决所有问题。
除去并重新创建索引: 记录错误文本中指定的索引页和索引 ID 的值。
确定哪个表和索引对应于该索引页号。
记下对象 ID。
如果有错的对象是系统表(对象 ID 小于 100),则无法除去该索引。执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 或从已知的清洁备份还原数据库。如果对象 ID 大于 100,则使用第 1 步中获得的表名和索引名称除去并重新创建该索引。在大多数情况下,这将清除该错误。
在受影响的数据库上执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB,以验证已解决所有问题。
GOsp_dboption 'mydb', 'single user', 'true'
GoDBCC CHECKDB('mydb', REPAIR_REBUILD)
GoUSE 你的数据库名
goexec sp_msforeachtable 'DBCC CHECKTABLE(''?'',REPAIR_REBUILD)'
exec sp_msforeachtable 'DBCC DBREINDEX(''?'')'
gosp_dboption 'mydb', 'single user', 'false'
Go