SQL Server记一回SQLServer数据库误删数据找回

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

       前几天同事在本机清理数据库表时,连接到了生产机,误删了二十几张表,幸而是夜间突击的时候删除的,生产机上当时是一天一备份,还原备份是终极的策略,最要害的依然要找回数据。

        生产机环境是server二〇〇九 CRUISER二 、sqlserver二零一二,使用delete语句删除的显今后初步苏醒,还原可参看dudu的那篇著作(链接),其中使用Recovery
for SQL
Server
工具还原,发现还原的数量字段值为demo,所以最终依旧用sql命令去复苏的,用sql命令,微软官方给的可比细致(链接)。

壹 、还原需求的规范设置

       
使用命令,是透过sqlserver的业务日志以及二个误删除前的数据库的总体备份展开还原,所以在sqlserver贰零壹壹的保安布置向导中,要手无寸铁完全备份,差别备份和工作日志,具体如下SQL Server 1

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

SQL Server 2

办好如上多个设置,数据库误删后找回数据就会相当轻松,以往说一下哪些回复sqlserver数据到故障点。

贰 、还原命令

光复首要分为四步走:

① 、出现故障后,首先实施备份工作日志命令,那里以AdventureWorks作为数据库名。命令如下:

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

② 、从总体备份还原数据

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

 

 

相关文章