[分享] mssql数据库内数据表删除后通过日志进行数据恢复解决方案

[复制链接]
  • TA的每日心情
    开心
    2012-4-25 18:36
  • 签到天数: 1 天

    [LV.1]布衣百姓

    200

    主题

    862

    回帖

    2601

    积分

    Intohard Team

    づ甜甜橙子ぜ

    Rank: 7Rank: 7Rank: 7

    积分
    2601
    发表于 2014-4-18 17:34:57 | 显示全部楼层 |阅读模式
    本帖最后由 甜橙 于 2014-4-18 17:37 编辑

    mssql数据库因为误操作将数据表删除了怎么办?服务器进行操作,不小心把数据库的所有表进行删除了。数据库文件存在数据文件和日志文件。可我在利用Log Explorer for SQL Server 进行利用日志文件进行恢复时,Log Explorer 没有找到相关的日志。可以采用以下方法尝试进行数据恢复

    在出现误删除后在log explorer进行还原时 browse->view  log->下没有找到相关的日志时间,但通过如下方法找到相关的操作日志.

    首先数据库故障还原模型必需为:完全;

    打开log   explorer   file=>attach   log   file->选择服务器和登陆方式->connect->选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了;   
    点击“View   DDL   Commands”里面就有很多drop   table   命令 ;  
    点击下面的“undo”按钮是生成表结构的语句(create   table   ....);   
    点击下面的“Salvage”按钮是生成插入语句的(insert   into   ...values....)  ;

    MSSQL小知识:
    1. --创建测试数据库
    2. CREATE DATABASE Db
    3. GO

    4. --对数据库进行备份
    5. BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT
    6. GO

    7. --创建测试表
    8. CREATE TABLE Db.dbo.TB_test(ID int)

    9. --延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)
    10. WAITFOR DELAY '00:00:01'
    11. GO

    12. --假设我们现在误操作删除了 Db.dbo.TB_test 这个表
    13. DROP TABLE Db.dbo.TB_test

    14. --保存删除表的时间
    15. SELECT dt=GETDATE() INTO #
    16. GO

    17. --在删除操作后,发现不应该删除表 Db.dbo.TB_test

    18. --下面演示了如何恢复这个误删除的表 Db.dbo.TB_test

    19. --首先,备份事务日志(使用事务日志才能还原到指定的时间点)
    20. BACKUP LOG Db TO DISK='c:\db_log.bak' WITH FORMAT
    21. GO

    22. --接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)
    23. RESTORE DATABASE Db FROM DISK='c:\db.bak' WITH REPLACE,NORECOVERY
    24. GO

    25. --将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早
    26. DECLARE @dt datetime
    27. SELECT @dt=DATEADD(ms,-20,dt) FROM #  --获取比表被删除的时间略早的时间
    28. RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=@dt
    29. GO

    30. --查询一下,看表是否恢复
    31. SELECT * FROM Db.dbo.TB_test

    32. /*--结果:
    33. ID         
    34. -----------

    35. (所影响的行数为 0 行)
    36. --*/

    37. --测试成功
    38. GO

    39. --最后删除我们做的测试环境
    40. DROP DATABASE Db
    41. DROP TABLE #
    复制代码

    该用户从未签到

    7

    主题

    271

    回帖

    226

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    226
    发表于 2014-4-18 20:24:48 | 显示全部楼层
    甜橙,好久不来发言,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2012-4-25 18:36
  • 签到天数: 1 天

    [LV.1]布衣百姓

    200

    主题

    862

    回帖

    2601

    积分

    Intohard Team

    づ甜甜橙子ぜ

    Rank: 7Rank: 7Rank: 7

    积分
    2601
     楼主| 发表于 2014-4-19 11:25:48 | 显示全部楼层
    jiaobo123 发表于 2014-4-18 20:24
    甜橙,好久不来发言,

    以后常来看看你
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-1-4 13:53
  • 签到天数: 1 天

    [LV.1]布衣百姓

    0

    主题

    6

    回帖

    51

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    51
    发表于 2015-1-4 13:56:00 | 显示全部楼层
    看看   只是
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-3-3 07:49
  • 签到天数: 32 天

    [LV.5]六品通判

    5

    主题

    1093

    回帖

    1219

    积分

    [INTOHARD]营长

    Rank: 6Rank: 6

    积分
    1219
    发表于 2017-2-4 09:02:11 | 显示全部楼层
    好东西不能错过,谢谢提供
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-4-28 18:23
  • 签到天数: 22 天

    [LV.4]七品知县

    0

    主题

    86

    回帖

    184

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    184
    发表于 2017-2-26 15:50:56 | 显示全部楼层
    感谢分享,学习了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表