多语言展示
当前在线:932今日阅读:126今日分享:42

SqlServer非正常删除(误删)数据库如何紧急修复

SqlServer2000非正常删除(误删)LOG数据文件后数据库紧急修复方法,本文已一个实际例子来展示恢复过程,下文中涂改的部分均为内部内容,涂改的数据库名均表示为returndate,各位在实际恢复时则使用现场实际数据库表命名即可。 用于存储的数据文件的可用空间为0,由于没有足够的磁盘存储数据库日志文件,无法备份,并执行分离数据库失败,告警提示空间不足,附件数据库时提示: 提示设备激活错误。只能删除数据库LDF文件,然后紧急修复。 由于数据日志文件产生巨大和数据库设置有关,修改数据库自动收缩配置,便于后续维护。
工具/原料

SqlServer2000

方法/步骤
1

1.   非正常删除log数据文件恢复过程 由于空间不足数据库备份无法执行,分离数据库,删除数据库事物日志,无法附加数据库,提示设备激活错误。 使用returndate.mdf数据库文件恢复数据库: Ø  建立一个数据库returndate,停止数据库服务。 Ø  将创建数据库后生成的数据库的日志文件returndate_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件returndate_data.mdf。 启动数据库服务。此时会看到数据库returndate的状态为“置疑”。这时候不能对此数据库进行任何操作。如图:

2

Ø  设置数据库允许直接操作系统表。 use master go sp_configure 'allow updates',1 go reconfigure with override go Ø  设置returndate为紧急修复模式,如图:

3

update sysdatabases set status=-32768 wheredbid=DB_ID('returndate') Ø  下面执行真正的恢复操作,重建数据库日志文件 Dbcc  rebuild_log ('returndate','D:\ProgramFiles\MicrosoftSQL Server\MSSQL\Data\returndate_log.ldf') 提示警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。 Ø  验证数据库一致性 dbcc checkdb('returndate') 如图:

4

Ø  设置数据库为正常状态 sp_dboption 'returndate','dbo useonly','false' 没有出错。 Ø  数据库允许直接操作系统表设置恢复, use master go sp_configure 'allow updates',0 go reconfigure with override go 如图:

5

Ø  恢复成功.如图:

6

Ø  由于数据日志文件产生巨大和数据库设置有关,在数据属性-故障还原:模型由完全修改为简单,设置项里勾选上残缺页检测,自动收缩。如图:

注意事项

数据库维护,注意定期备份,关注存储数据空间变化

推荐信息