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