条件:数据库系统中的whatsup库显示置疑,
数据库缺省安装
其对应的数据文件是:D:\whatsup\whatsup.mdf
其对应的日志文件是:D:\whatsup\whatsup.ldf
恢复步骤:
--a.停止mssql服务,将whatsup.ldf和whatsup.mdf文件备份到其它目录下,
将源目录下的whatsup.ldf文件改名为whatsup.bak.ldf;
--b.启动mssql服务,在mssql管理控制台的local的sql的配置属性里选取服务器
设置选单选取允许对系统目录直接进行修改;
--c.执行以下语句修改数据库的状态和关闭数据库:
use Master
go
update sysdatabases set status=32768 where name='whatsup' --修改状态,設為緊急狀態
go
shutdown with nowait --停止数据库服务器
go
正常回显是:
(所影响的行数为 1 行)
服务器已按要求关闭。
SQL Server 正在终止此进程。
--d.在(COMMAND)命令行模式中通过下面的代码以安全模式重新启动SQL:
cd C:\Program Files\Microsoft SQL Server\MSSQL\Binn
sqlservr -c -T3608 -T4022 --安全模式启动SQL SERVER
--e.在查询分析器中执行以下语句来查看刚刚修改过状态的数据库状态:
select Name,Status from sysdatabases where Name='whatsup' --结果应该是"32768",不然重回a操作。
--f.执行以下代码新建日志文件:
dbcc traceon(3604) --跟踪
dbcc rebuild_log('whatsup','D:\whatsup\whatsup.LDF') --文件名要有全路径和扩展名
正常回显是:
警告: 数据库 'whatsup' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。
将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
--g.将数据库置回正常状态:
update sysdatabases set status=0 where name='whatsup'
--h.将数据库恢复为多用户模式:
sp_dboption 'whatsup', 'single user','false' ---('false'恢复多用户)
Go
这时进行数据库备份,备份后重启动服务器即可。
如果还是不行,接着进行以下修复
--i.将数据库改为单用户模式:
sp_dboption 'whatsup','single user','true'
--j.将数据库置回正常状态:
update sysdatabases set status=0 where name='whatsup'
--k.重新启动数据库后执行以下语句检查,执行以下语句修复数据库:
DBCC CHECKDB('whatsup',REPAIR_ALLOW_DATA_LOSS)
#DBCC CHECKDB --如果执行完有错误用以下语句修复
#REPAIR_ALLOW_DATA_LOSS:是比较高级的修复方式
#REPAIR_FAST:是简单快速的修复方式
参考文章:
阅读(1344) | 评论(0) | 转发(0) |