前文:
有一天突然断电,重启电脑后发现数据库显示质疑,并无法打开,在其他机器也没办法附加上,网上搜了很多的恢复方法,本文是针对于这两个错误的方法,也是根据sql server 错误9003:LSN(434:94:1)无效-阿里云开发者社区。进行恢复成功的,仅供参考。
简介:
我们使用先创建一个新的同名数据库,然后关闭企业管理器,并把损坏的mdf和ldf替换掉新创建的新数据库文件,然后删除掉ldf,使用命令dbcc并创建一个新的日志文件(空的)。
第一步:在企业管理器中,创建同名新数据库:DataBase2023
第二步:关闭企业管理器,并将损坏的文件替换掉新数据库文件(通常目录应该在C:\Program Files (x86)\Microsoft SQL Server\MSSQL\Data)
这时,可能会提示data文件夹被占用,如果没有提示,直接替换,否则先关闭服务。
第三步:替换完毕,启动服务(替换文件时没有提示data文件被占用的可以进入第四步)
第四步:查看企业管理器,这时就变成了“质疑”
这个时候先不管数据,用以下代码,去“查询分析器”开启 “允许对系统目录直接修改” ,并把数据库改成 “紧急模式”
use master
go
sp_configure 'allow updates', 1
go
reconfigure with override
go
update sysdatabases set status=-32768 where dbid=DB_ID('DataBase2023')
响应:已将配置选项 'allow updates' 从 0 改为 1。请运行 RECONFIGURE 语句以安装。
(所影响的行数为 1 行)
第五步:此时可以在企业管理器里面看到该数据库处于 “只读/置疑/脱机/紧急模式” ,可以看到数据库里面的表,但是仅仅有系统表。
第六步:删掉这个ldf文件,在查询分析器打印以下代码
dbcc rebuild_log('DataBase2023','C:\Program Files (x86)\Microsoft SQL Server\MSSQL\Data/DataBase2023_Log.ldf')
没有删除会提示(必须要删除这个ldf文件):
服务器: 消息 5025,级别 16,状态 1,行 1
文件 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL\Data/DataBase2023_Log.ldf' 已存在。应重命名或删除该文件,以便创建新日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
如果已经删除,打印的消息应该是:
警告: 数据库 'DataBase2023' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
第七步:去企业管理器里面,看到该数据库处于 “只供DBO使用”。我们去 查询分析器 执行以下代码,让数据库恢复正常。
sp_dboption 'DataBase2023','dbo use only', 'false'
这时,去企业管理器中查看就已经正常了我们的数据库
第八步:把我们第四步中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。
use master
go
sp_configure 'allow updates', 0
go
reconfigure with override
go