当前位置:   article > 正文

Sqlserver误删除数据后恢复数据一例_sqlserver 从数据页恢复

sqlserver 从数据页恢复

Sqlserver误删数据恢复:

    版本:Sqlserver 2005

    今天凌晨,开发同事在操作Sqlserver数据库时,误删了一个表一年的数据,由于该数据库是每天两次全备(数据库大小为18G左右),于是就把昨天中午的备份拿过来还原出来,然后把这个表的数据导出来还原到生产库上,但是这样的话这个表就少了半天的数据,今天客户知道后要求必须恢复完全。
    我对Sqlserver了解的特别少,也就只能从网上查查资料,然后把Oracle的思路带过来试试。
    
    首先只有备份肯定是不行的 还必须得有事务日志。
    
    看了一下现场的生产环境,日志20多G。。就先对事务日志做了一次备份,据我推测这应该是数据库创建使用到现在的所有的事务日志文件。
    
    事务日志备份完后,在昨天晚上同事还原的临时库的基础上,再利用昨天中午的备份+刚备份的事务日志,再进行还原。
    
    还原选项大概是这样的:

   由于之前没操作过Sqlserver恢复+在生产库上操作,操作起来特别害怕。。还特害怕把现在正在用的正式库还原了
    (所有的恐惧都是源于未知)
    
    常规选项页中选好还原的目标时间点,下面选好源数据库后会自动关联出可用的备份集
    
    特别要注意的是选项中移一定要修改还原为的路径
    
    还原的时候 可以通过sp_who2定位还原的会话,然后通过以下sql监控还原进度:

  1. SELECT session_id,
  2. percent_complete,
  3. request_id,
  4. start_time,
  5. status,
  6. command,
  7. sql_handle,
  8. database_id,
  9. user_id,
  10. blocking_session_id,
  11. wait_type,
  12. wait_time,
  13. last_wait_type,
  14. wait_resource,
  15. open_transaction_count,
  16. open_resultset_count,
  17. transaction_id,
  18. estimated_completion_time,
  19. cpu_time,
  20. total_elapsed_time,
  21. scheduler_id,
  22. reads,
  23. writes,
  24. logical_reads
  25. FROM sys.dm_exec_requests
  26. WHERE session_id = 54

  查出是status字段一直是suspended,让我以为恢复被什么阻塞了呢,然后发现percent_complete一直在上涨,判断status字段应该没有什么影响吧。。
 
 恢复完成后顺利的从数据库里面找到了之前未恢复的数据。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/922461?site
推荐阅读
相关标签
  

闽ICP备14008679号