SQL SERVER数据库碰到823错误不能启动的解决方法

由于机器意外断电重启,发现SQL Server 服务不能启动。查看系统的事件日志,发现有错误提示:
———————————-
服务器: 消息 823,级别 24,状态 5
———————————-
对数据库启动错误信息进行细节排查,发现其中有ErrorDB出错,不能附加这个数据库,从而整个SQL Server 服务不能启动。

修复方法
1. 将已破坏的ErrorDB数据库文件更名,如ErrorDB_Data.Mdf ==>ErrorDB_Data1.Mdf, ErrorDB_Log.Ldf==>ErrorDB_Log1.Ldf

2. 再次启动SQL Server服务,发现可以正常启动服务,但是会看到ErrorDB显示为置疑状态,将其分离,重新建立一个同名的ErrorDB数据库。

3. 选中新建的数据库,将其脱机, 然后到数据库数据目录下将新数据库更名(ErrorDB_Data.Mdf ==> ErrorDB_Data2.Mdf), 将待修复老数据库更名为原先名称ErrorDB_Data1.Mdf ==> ErrorDB_Data.Mdf

4. 在SQL查询分析器中, 执行如下命令:
use master
sp_configure ‘allow’, 1
reconfigure with override
update sysdatabases set status = 32768 where name = ‘ErrorDB’

5. 将LDF文件改名,然后将ErrorDB联机,再在查询分析器中执行
DBCC REBUILD_LOG (‘ErrorDB’, ‘E:\Data\ErrorDB_Log.LDF’ )

6. 恢复数据库紧急模式
update sysdatabases set status = 0 where name = ‘ErrorDB’

7. 在查询分析器中执行
restore database ErrorDB with recovery
sp_configure ‘allow’, 0
reconfigure with override

8. 检查数据库看看还有没有错误,
DBCC CHECKDB (‘ErrorDB’)

————-
如以上还是不行,可以尝试使用
DBCC CHECKDB(‘ErrorDB’, Repair_Allow_Loss_Data)
命令修复数据库,不过这样会丢失一些数据,但是话说回来,貌似不这样那些坏掉的数据也回不来的。
————-
在做以上处理时,要注意关闭使用ErrorDB的程序。要不然某些步骤会提示不能获得数据库的排他性操作权限,不能对命令进行执行处理。

Popularity: 6% [?]

Related