1、 SqlServer2000 非正常删除 (误删 )LOG 数据文件后数据库紧急修复 方法 1. 问问 题题 现现 象象 描描 述述 SqlServer2000 非正常删除 (误删 )LOG 数据文件后数据库紧急修复方法 ,本文已一个实际例子来展示 恢复过程 ,下文中涂改的部分均为内部内容,涂改的数据库名均表示为 returndate, 各位 在实际恢复时则 使用 现场 实际 数据库表命名 即可 : 用于存储的数据文件的可用空间为 0, 由于没有足够的磁盘存储数据库日志文件,无法备份,并 执行分离数据库失败 , 告警 提示 空间不足,附件数据库时提示 : 提示 设备激活错误 。只能删除数据库
2、LDF 文件 ,然后紧急修复 。 2. 非非 正正 常常 删删 除除 log数数 据据 文文 件件 恢恢 复复 过过 程程 由于空间不足 数据库备份无法执行,分离数据库,删除数据库事物日志,无法附加数据库,提示 设备激活错误 。 使用 returndate.mdf 数据库文件恢复数据库: 建立一个数据库 returndate,停止数据库服务。 将创建数据库后生成的数据库的日志文件 returndate_log.ldf 删除,用要恢复的数据库 mdf 文件覆盖刚才生成的数据库数据文件 returndate_data.mdf。 启动数据库服务 。此时会看到数据库 returndate 的状态为“置
3、疑” 。这时候不能对此数据库进行任何操作。如图: 设置数据库允许直接操作系统表。 use master go sp_configure allow updates,1 go reconfigure with override go 设置 returndate 为紧急修复模式 ,如图 : update sysdatabases set status=-32768 where dbid=DB_ID(returndate) 下面执行真正的恢复操作,重建数据库日志文件 Dbcc rebuild_log (returndate,D:ProgramFilesMicrosoft SQL ServerMSSQ
4、LDatareturndate_log.ldf) 提示警告 : 数据库 test 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。 验证数据库一致性 dbcc checkdb(returndate) 如图: 设置数据库为正常状态 sp_dboption returndate,dbo use only,false 没有出错。 数据库允许直接操作系统表设置恢复 ,如图: use master go sp_configure allow updates,0 go reconfigure with override go 恢复成功 .如图 : 由于数据日志文件产生巨大和数据库设置有关,在数据属性 -故障还原:模型由完全修改为简单,设置项里勾选上残缺页检测,自动收缩。如图: