SqlServer 2000 错误9003&3456 数据库文件损坏导致的无法附加数据库与数据库(质疑)

前文:

有一天突然断电,重启电脑后发现数据库显示质疑,并无法打开,在其他机器也没办法附加上,网上搜了很多的恢复方法,本文是针对于这两个错误的方法,也是根据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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用SQL Server附加数据库时,如果主文件(.mdf)和子文件(.ldf)不匹配,可以按照以下步骤处理: 1. 检查文件路径:确保附加的主文件和子文件在同一个文件夹中,并且文件路径正确。 2. 检查文件名:使用正确的文件名进行附加。主文件(.mdf)和子文件(.ldf)应该拥有相同的文件名,只是扩展名不同。 3. 检查文件版本:如果主文件和子文件是由不同版本的SQL Server生成的,可能会导致不匹配。确保附加数据库版本与主文件和子文件的版本一致。 4. 重命名文件:如果文件不匹配的问题是由于文件损坏或重命名引起的,可以尝试将文件重命名为正确的文件名,并重新尝试附加。 5. 恢复备份:如果以上方法都不起作用,可以尝试使用数据库备份文件进行恢复。首先,创建一个新的空数据库,然后从备份文件中还原数据。 6. 使用恢复模式:如果数据库是在"完全恢复"模式下创建的,需要先将数据库设置为"简单恢复"模式,然后重新尝试附加。 7. 重新生成日志文件:如果子文件(.ldf)已经损坏或丢失,可以尝试使用数据库的主文件(.mdf)和事务日志文件(.bak)重新生成一个新的日志文件。 需要注意的是,在执行任何操作之前,请务必备份数据库文件,以避免数据丢失。此外,如果仍然无法解决问题,建议联系数据库管理员或专业人士进行进一步的故障排除和修复

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值