假定数据库名为AA
1.将AA_log.ldf文件备份到其它目录下;
2.将源目录下的AA_log.ldf文件改名为smlog_log_bak.ldf;
3.在查询分析器中执行以下语句修改数据库的状态:
use Master
go
update sysdatabases set status=32768 where name='AA' --修改状态
go
shutdown with nowait --停止数据库服务器
go
4.退出SQL并在命令行模式中执行以下代码:
sqlservr -c -T3608 -T4022 --安全模式启动SQL SERVER
5.在查询分析器中执行以下语句来查看刚刚修改过状态的数据库状态:
select Name,Status from sysdatabases where Name='AA'
6.在查询分析器中执行以下代码重建日志文件:
dbcc traceon(3604) --跟踪
dbcc rebuild_log('AA','AA') --文件名要有全路径和扩展名
本步骤如果成功,继续执行下一步的操作,如果报错,也可以不管它继续下一步,也可以将操作之前建立的同名空数据库日志文件COPY过来就行。
7.在查询分析器中执行以下代码将数据库置回正常状态:
update sysdatabases set status=0 where name='AA'
8.重新启动数据库后执行以下语句检查数据库:
DBCC CHECKDB --如果执行完有错误用以下9.10两步语句修复
9.要修复数据库必需将数据库改为单用户模式:
Exec sp_dboption '数据库名称','single user','true'
10.执行以下语句修复数据库:
DBCC CHECKDB('AA',REPAIR_ALLOW_DATA_LOSS)
11.将数据库改为多用户模式:
Exec sp_dboption 'AA','single user','false'
12.重新启动电脑,成功!
参考资料:http://dl186.blog.sohu.com/108537742.html