SQLServer【恢复挂起的解决方案】附加文件时候的提示“无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。 ”

本文详细记录了一次数据库日志意外删除后的恢复过程,包括新建数据库、禁用TCP/IP、停止MSSQL服务、覆盖.mdf文件、设置紧急模式、单用户模式,然后进行快速修复和索引重建,最后切换回多用户模式。特别关注了在事务未完成时如何处理数据库恢复问题。
摘要由CSDN通过智能技术生成

第一步:新建一个同名的数据库

 第二步:停止MSSQL服务

 第三步:覆盖.mdf数据库文件

 第四步:重启MSSQ服务

第五步:恢复数据库

 5.1设置数据库为紧急模式

5.2设置数据库为单用户模式

 5.3 恢复数据库

5.4修复成功后切换为多用户模式


 

 

 数据库日志太大,在未脱机的情况下删除了日志文件,导致在附加数据时出现“无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的”的错误,经过一番折腾后,终于恢复了数据库,在这记录一下。

第一步:新建一个同名的数据库

 第二步:停止MSSQL服务

如果该数据库有众多连接的,可以先禁用TCP,某些情况下,这个在后续的数据库恢复过程中节省不少的时间。

禁用TCP/IP

 停止MSSQL服务

 第三步:覆盖.mdf数据库文件

 第四步:重启MSSQ服务

第五步:恢复数据库

覆盖数据后,打开数据库会显示为(恢复挂起)

 5.1设置数据库为紧急模式

alter database 数据库名称 set emergency

5.2设置数据库为单用户模式

设置过程中如果数据库过大的话,命令行显示执行成功后,数据库状态标识会显示的比较慢一点

第一种方法:SQL语句执行

alter database  数据库名称 set single_user

第二种方法:可视化操作

右键出问题的数据库---属性--选项--状态--限制访问,选择为SINGLE_USER,点击确定

 5.3 恢复数据库

先快速修复一下(如果出现问题请试试, [Repair_Rebuild-重建索引并修复] 和 [Repair_Allow_Data_Loss-允许丢失数据的修复方式])

--快速修复 
--dbcc checkdb ('数据库名', Repair_Fast)
--go
--重建索引并修复 
--dbcc checkdb ('数据库名', REPAIR_REBUILD)
--go
--如果必要允许丢失数据修复 
--dbcc checkdb ('数据库名', Repair_Allow_Data_Loss) 
--go

5.4修复成功后切换为多用户模式

alter database 数据库名称 set multi_user

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值