SQL Server 紧急状态下的数据库恢复

当SQL Server数据库因服务器硬盘损坏而处于质疑状态时,可以通过两种方法进行恢复。第一种方法涉及将.mdf和.ldf文件复制到本地,停用数据库服务,替换文件,设置数据库为紧急状态和单用户模式,然后使用DBCC命令检查和修复。第二种方法是利用备份文件还原数据库,并通过bcp命令导出和导入数据。本文详细介绍了这两种恢复策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:由于服务器硬盘损坏,服务器异常关机。重新进入后,数据库为质疑状态。(数据库名字上面有个感叹号,连接不了)

经过无数次的百度以及大佬们的指点下,终于成功恢复,下面来说一下方法。

第一种:

1、在服务器上停掉出问题的数据库服务,把.mdf数据库文件和.ldf日志文件拷贝至本地。

2、本地新建一个同名数据库,找到文件地址,停掉sql服务后。把.mdf文件删掉(可以也把.ldf也删掉,但删不删除我都试过了,最后都会重新生成一个新的.ldf的文件,所以这里没啥特别要注意的地方),再把服务器上拷贝的.mdf文件粘贴到该路径下面。实际上就是替换一下。

3、开启sql服务,此时数据库还是不能用,执行下面指令,使数据库进入紧急状态

alter database 出问题的数据库的名字 set emergency   

(设置完后可以弄一下停止,重启sql服务,主要是看了很多答案,有的说弄一下,我只是跟风,不重启sql服务也行吧,反正我重启了)

4、执行下面指令,使数据库进入单用户模式

alter database 出问题的数据库的名字 set single_user

5.1、检查并重建日志文件

dbcc checkdb('出问题的数据库的名字',REPAIR_ALLOW_DATA_LOSS)

(我数据库8.5G,我大概跑了30分钟,另外一个配置好一点电脑跑了10多分钟,这一步就耐心等候就好了)

5.2、进行修复。如果没有错误,可以跳过。(我ldf文件没删,就报什么文件不匹配,我感觉一般都会报错,用下面的命令再执行一下,这个时候又得耐心的等候了)

dbcc checkdb('出问题的数据库的名字',REPAIR_REBUILD)

 

6、最后恢复成多用户模式

alter database 出问题的数据库的名字 set mul

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值