Zoi*_*nky 1 sql-server dbcc-checkdb
我收到了很多错误DBCC CHECKDB
,包括:
消息 8939,级别 16,状态 98,第 1 行
表错误:对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 3667181342891245568(未知类型),页面(7791:-1694668604)。测试 (IS_OFF (BUF_IOERR, pBUF->bstat)) 失败。值为 133129 和 -12。
消息 8928,级别 16,状态 1,第 1 行
对象 ID 405576483,索引 ID 73,分区 ID 72057594049200128,分配单元 ID 72057594054246400(类型行内数据):处理页 (1:194) 有关详细信息,请参阅其他错误。
消息 8976,级别 16,状态 1,第 1 行
表错误:对象 ID 405576483,索引 ID 73,分区 ID 72057594049200128,分配单元 ID 72057594054246400(类型行内数据)。页面 (1:194923) 未在扫描中看到,尽管其父页面 (1:186194) 和上一个页面 (1:194922) 引用了它。检查以前的任何错误。
消息 8980,级别 16,状态 1,第 1 行
表错误:对象 ID 405576483,索引 ID 73,分区 ID 72057594049200128,分配单元 ID 72057594054246400(类型行内数据)。索引节点页 (1:186194),槽 103 指的是子页 (1:194924) 和前一个子页 (1:194923),但没有遇到过。
消息 8978,级别 16,状态 1,第 1 行
表错误:对象 ID 405576483,索引 ID 73,分区 ID 72057594049200128,分配单元 ID 72057594054246400(类型行内数据)。页面 (1:194932) 缺少上一页 (1:194931) 的引用。可能的链条连接问题。
最重要的是,在最后,转发以下内容:
CHECKDB 在数据库“houseme”中发现 0 个分配错误和 28 个一致性错误。
repair_allow_data_loss 是 DBCC CHECKDB (houseme) 发现的错误的最低修复级别。
我该怎么办?
的输出DBCC CHECKDB
已告诉您确切的操作:
USE [master];
GO
ALTER DATABASE houseme SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB(N'houseme', REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE houseme SET MULTI_USER;
Run Code Online (Sandbox Code Playgroud)
如果选项的名称不够明显,这可能会导致数据丢失- 但如果没有备份,您真的没有任何其他选择。
如果这不起作用,并且您没有备份,那么您可能刚刚学到了关于为什么应该有备份的非常昂贵的教训。您可以看看Paul Randal 是否有其他想法,或者Steve Stedman 的这个想法。当然,没有任何保证。
如果多次尝试后仍然出现一致性错误,可能是时候创建一个新数据库,尽可能多地迁移一致的数据并减少损失。