我们有一个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
>如果返回清除,则再次恢复而不恢复
>应用所有后续TLOG备份
>停止生产应用程序,进行尾部日志备份并应用它
>删除prod DB并重命名新恢复的数据库以使其生效
>开始生产应用程序
有人可以用这种方法打洞吗?也许,建议采用不同的方法?我们需要的是最短的停机时间.
sql 2000
数据库大小94 GB
具有损坏页面的表具有4.6亿行数据
谢谢您的帮助.
拉吉