赞
踩
Sqlserver误删数据恢复:
版本:Sqlserver 2005
今天凌晨,开发同事在操作Sqlserver数据库时,误删了一个表一年的数据,由于该数据库是每天两次全备(数据库大小为18G左右),于是就把昨天中午的备份拿过来还原出来,然后把这个表的数据导出来还原到生产库上,但是这样的话这个表就少了半天的数据,今天客户知道后要求必须恢复完全。
我对Sqlserver了解的特别少,也就只能从网上查查资料,然后把Oracle的思路带过来试试。
首先只有备份肯定是不行的 还必须得有事务日志。
看了一下现场的生产环境,日志20多G。。就先对事务日志做了一次备份,据我推测这应该是数据库创建使用到现在的所有的事务日志文件。
事务日志备份完后,在昨天晚上同事还原的临时库的基础上,再利用昨天中午的备份+刚备份的事务日志,再进行还原。
还原选项大概是这样的:
由于之前没操作过Sqlserver恢复+在生产库上操作,操作起来特别害怕。。还特害怕把现在正在用的正式库还原了
(所有的恐惧都是源于未知)
常规选项页中选好还原的目标时间点,下面选好源数据库后会自动关联出可用的备份集
特别要注意的是选项中移一定要修改还原为的路径
还原的时候 可以通过sp_who2定位还原的会话,然后通过以下sql监控还原进度:
- SELECT session_id,
- percent_complete,
- request_id,
- start_time,
- status,
- command,
- sql_handle,
- database_id,
- user_id,
- blocking_session_id,
- wait_type,
- wait_time,
- last_wait_type,
- wait_resource,
- open_transaction_count,
- open_resultset_count,
- transaction_id,
- estimated_completion_time,
- cpu_time,
- total_elapsed_time,
- scheduler_id,
- reads,
- writes,
- logical_reads
- FROM sys.dm_exec_requests
- WHERE session_id = 54

查出是status字段一直是suspended,让我以为恢复被什么阻塞了呢,然后发现percent_complete一直在上涨,判断status字段应该没有什么影响吧。。
恢复完成后顺利的从数据库里面找到了之前未恢复的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。