SQL Server附加数据库失败,823错误。

SQL Server附加数据库失败,823错误。


服务器在正常运行的情况下突然断电,导致数据库文件严重损坏。附加或还原数据库无果,在附加数据库过程中出现823字样的错误。

查阅SQL server 联机丛书中关于823错误的解释:

错误编号 : 823
严重级别 : 24
消息正文 :
在文件 '%ls' 中、偏移量为 %#016I64x 的位置执行 %S_MSG 期间,操作系统已经向 SQL Server 返回了错误 %ls。SQL Server 错误日志和系统事件日志中的其他消息中可能提供了更详细信息。这是一个威胁数据库完整性的严重系统级错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。

说明 :

Windows 读取或写入请求失败。将 Windows 返回的错误代码和相应的文本插入到消息中。对于读取操作,SQL Server 已经重试读取请求四次。通常是硬件错误导致此错误,但也可能是设备驱动程序导致的。
----------------------------------------------------------------------------------------------------------------------------------------------------------
解决办法:
1. 在企业管理器中,新建同名数据库(data_db);

2. 停止SQL Server服务,将损坏的数据库文件 data_db.mdf 替换掉刚刚新建好的数据库文件,并删除该数据库的日志文件 data_db.mdf _log.ldf;

3. 重新启动SQL Server服务,此时再打开企业管理器,发现该数据库有“置疑”字样;

4. 接下来打开SQL自带查询分析器,执行如下SQL语句:

(1)选择master系统库,打开修改系统表的开关

EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE 

(2)选择master系统库,设置数据库状态为紧急修复模式

UPDATE sysdatabases set status=32768 where name='data_db' 

(3)选择master系统库,执行重建data_db_log.ldf文件命令

DBCC REBUILD_LOG ('data_db', 'D:\database_fix\data_db_Log.LDF')

(4)选择master系统库,关闭数据库紧急修复模式

UPDATE sysdatabases set status=0 where name='data_db' 

(5)选择data_db,执行恢复数据库命令

RESTORE database data_db WITH RECOVERY 

(6)选择master系统库,关闭打开修改系统表的开关

EXEC sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE 


----------------------------------------------------------------------------------------------------------------------------------------------------------
 通过以上六个步骤把数据库恢复后,数据库表里还有损坏的表(tb_damage),将坏表导出或修改的时候可能会无响或者不成功。可以尝试 DBCC CHECKTABLE 命令,例 :

DBCC CHECKTABLE ('tb_damage' , REPAIR_ALLOW_DATA_LOSS)


 以上内容谨供本人日后查阅


你可能感兴趣的:(SQL,Server)