当数据库损坏和挂起后推荐的做法(翻译)
原文为Recommended actions for corrupt or suspect databases
概述
数据库挂起和损坏是很少见的,但是却有可能发生,主要是因为致命的硬件错误或者操作失误,如删掉日志文件
更多信息
下面列出的要点的前提你要有各种损坏的或挂起数据库(废话),本文受到到一些SQLSERVER MVP同仁和SQLSERVER 开发团队的帮助,
方法
1.确保你有备份策略,及时的从硬件错误中恢复,建议在大多数情况下备份你的数据库和日志文件
2.如果可以的话,运行下 DBCC CHECKDB 命令,根据返回的错误号,通过在线文档和知识库确认是什么问题。DBCC命令的NO_INFOMSGS非常有用,它认DBCC只返回错误信息
3.找找看为什么会发生?检查下事件日志,诊断下硬件,对返回的错误代码找找在线帮助文档,确保不会再次发生!如果是数据库挂起了,看数据库文件是不是正被杀毒软件使用,这时可以重启
一下SQLSERVER,但是仍然需要检查日志文件,到底发生了什么?
4.如果是硬件问题,确保硬件要被更换
5.备份日志文件,确保备份计划适时执行。如果数据库挂起了,使用BACKUP命令的NO_TRUNCATE选项。此外为了额外的安全,可以备份mdf和ldf文件
6.恢复是最适合不过的事,如果你有一些日志备份,可能就不会有任何的数据丢失。恢复到最近的一次完全备份,接下来的用日志做还原到某个时间点的,如果是SQLSERVER 2005,还能够精确的还原到某个页。
7.如果数据库没有挂起,可以使用DBCC命令的REPAIR选项,这回导致一些数据的丢失,在依靠具体的错误,可能需要手工重建非聚集索引 ,加载或删除表中的数据。