sql-server – 修复数据库中不一致的页面
发布时间:2020-12-12 16:52:34 所属栏目:MsSql教程 来源:网络整理
导读:我们有一个SQL 2000 DB.由于Raid阵列故障,服务器崩溃.现在,当我们运行DBCC CHECKDB时,我们得到一个错误,即9页中有27个一致性错误. 当我们在这些页面上运行DBCC PAGE时,我们得到: Msg 8939,Level 16,State 106,Line 1Table error: Object ID 1397580017,index
我们有一个SQL 2000 DB.由于Raid阵列故障,服务器崩溃.现在,当我们运行DBCC CHECKDB时,我们得到一个错误,即9页中有27个一致性错误.
当我们在这些页面上运行DBCC PAGE时,我们得到: Msg 8939,Level 16,State 106,Line 1 Table error: Object ID 1397580017,index ID 2,page (1:8404521). Test (m_freeCnt == freeCnt) failed. Values are 2 and 19. Msg 8939,State 108,page (1:8404521). Test (emptySlotCnt == 0) failed. Values are 1 and 0. 由于指示的索引是非聚集的,并且由包含2列的唯一constarint创建,因此我们尝试删除并重新创建索引.这导致以下错误: CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 2. Most significant primary key is '3280'. The statement has been terminated. 然而跑步 Select var_id,result_on from tests group by var_id,result_on having count(*)>1 返回0行. 以下是我们计划做的事情: >恢复数据库的服务器前崩溃副本并运行DBCC CHECKDB 有人可以用这种方法打洞吗?也许,建议采用不同的方法?我们需要的是最短的停机时间. SQL 2000 谢谢您的帮助. 拉吉 解决方法您的恢复解决方案是教科书的开始方式.假设您有适当的备份并且提供了可以备份损坏数据库的事务日志,那么您的策略就是要实现的教科书.在继续之前,您是否考虑过仅重建受影响的桌子的可能性? 有时您可以通过执行a来创建受影响的表的精确副本 select * into NewTableFromOld from DamagedTable 然后只需使用new删除/交换损坏的表,记住要添加适当的约束和索引. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |