如果发现 SQL2000数据库脱机/只读/紧急模式 ;我们就拿Clinic 数据库为例。
第一步:停止服务管理,然后删除目录下的对应的Clinic_log.LDF文件;复制Clinic_Data.MDF文件到其它地方。
第二步:启用服务管理器,删除对应的数据库Clinic。
第三步:新建一个同样的数据库Clinic,然后把刚才复制的Clinic_Data.MDF文件覆盖了新建的Clinic_Data.MDF文件。这时刷新后 数据库建立的数据库名出现了 Clinic(质疑)。
第四步:进入查询分析器,输入以下语句
use master go sp_configure 'allow updates',1 go reconfigure with override go
注意输正确,如果输入后执行此语句,并且下面显示
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 已将配置选项 'allow updates' 从 0 改为 1。请运行 RECONFIGURE 语句以安装。
说明执行正确,如果不显示以上信息,请检查是否有输错! 此语句是的作用是:设置数据库允许直接操作系统表。 第五步,执行第4步成功后, 接着设置数据库为紧急修复模式。
update sysdatabases set status=-32768 where dbid=db_id('Clinic')
下面显示
(所影响的行数为 1 行)
第六步,继续,重新数据库日志(ldf)文件。
dbcc rebuild_log('Clinic','D:\Microsoft SQL Server\MSSQL\Data\Clinic_rebuild_log)
这里需要注意,我电脑数据库文件是装在D盘,所以上面路径是D盘,如果不同,要修改。 这样,就重建了 Clinic的ldf日志文件。
下面显示: 警告: 数据库 'Clinic' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。 将必须重置数据库选项,并且可能需要删除多余的日志文件。
第七步,现在检查有没有错误,再输入语法 dbcc checkdb('Clinic')
下面显示
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'Clinic 中)。
那说明第6步就建立成功没问题了,下面就可以把SQL恢复模式了
第八步,设置数据库为正常状态
sp_dboption 'Clinic,'dbo use only','false'
恭喜你,数据库修复完成!
|