我们有一个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, Level 16, State 108, Line 1
Table error: Object ID 1397580017, index ID 2, 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备份
- 停止生产应用程序,进行尾日志备份并将其也应用
- 删除产品数据库并重命名新恢复的数据库以使其成为产品
- 启动产品应用
有人可以用这种方法打孔吗?也许,建议其他方法?我们需要的是最少的停机时间。
SQL 2000 DB大小94 GB具有损坏页面的表具有4.6亿多行数据
谢谢您的帮助。
拉吉
1
我喜欢你的方法。我感觉合理。也许将损坏的数据库
—
放在
另外,当情况稳定下来时,请计划您的2008或2008升级:-)
—
user24161'2
(即2005或2008升级)
—
user24161 2010年
+1具有有效且非常合适的恢复计划
—
Andrew