SQLServer数据库误删数据找回

记一次SQLServer数据库误删数据找回

 昨天 同事在本机清理数据库表时,链接到了生产机,误删了二十几张表,幸亏是晚上加班的时候删除的,生产机上当时是一天一备份,还原备份是最后的策略,最关键的仍是要找回数据。html

        生产机环境是server2008 R二、 sqlserver2012,使用delete语句删除的表如今开始还原,还原可参考dudu的这篇文章(连接),其中使用Recovery for SQL Server工具还原,发现还原的数据字段值为demo,因此最后仍是用sql命令去还原的,用sql命令,微软官方给的比较明细(连接)。sql

1、还原须要的条件设置数据库

        使用命令,是经过sqlserver的事务日志以及一个误删除前的数据库的完整备份进行还原,因此在sqlserver2012的维护计划向导中,要创建完整备份,差别备份和事务日志,具体以下image工具

以及在数据库属性,选项设置中,设置为完整备份,具体以下图sqlserver

image

作好如上两个设置,数据库误删后找回数据就会很是轻松,如今说一下如何还原sqlserver数据到故障点。post

2、还原命令spa

还原主要分为四步走:3d

一、出现故障后,首先执行备份事务日志命令,这里以AdventureWorks做为数据库名。命令以下:日志

1
2
BACKUP LOG AdventureWorks TO  DISK = 'C:\SQLServerBackups\AdventureWorks_transcationlog.bak' 
    WITH  NORECOVERY;

二、从完整备份还原数据code

RESTORE  DATABASE [QASupervision] FROM DISK='M:\Database\OA\AdventureWorks_Fullbackup_2014_03_18_010002_0155764.bak' 
WITH  NORECOVERY, REPLACE 

三、从差别备份还原数据

RESTORE DATABASE [QASupervision] FROM DISK='M:\Database\OA\AdventureWorks_diffbackup_2014_03_18_020002_0155764.bak' WITH NORECOVERY, REPLACE 

四、从事务日志还原数据,还原到某个时间点以前

1
2
3
4
DECLARE  @dt datetime  
SELECT  @dt=DATEADD( HOUR ,-16,GETDATE())  
select  @dt
RESTORE LOG [QASupervision] FROM  DISK= 'C:\SQLServerBackups\AdventureWorks_transcationlog.bak'   WITH   STOPAT=@dt,RECOVERY

五、还原数据库,若是数据库提示正在还原中,则执行此命令便可。

1
RESTORE DATABASE  AdventureWorks WITH  RECOVERY
相关文章
相关标签/搜索