在发生删除操作后,发现要找回删除的记录,此时灾难发生,为了挽回记录,操作步骤如下:

首先保证数据恢复模式是完整的,然后才能做下面的操作:

sql server 删除表恢复 sqlserver怎么恢复删除的数据_日志文件

强烈建议数据库创建之后做个完整的备份,相当于备份了一个空的没有表的数据库,但此备份bak文件就是我们需要依赖恢复的文件,日志文件恢复建立在此上(如果在误删除了记录以前,没有任何一个数据库完整的备份bak,那么只能依赖第三方数据库查看日志工具来恢复了,我用的ApexSQL Log 2016)

这篇博文是用ApexSQL Log工具读取日志恢复数据:

强烈建议数据库做个定时任务,每日凌晨1点执行完整备份,以备误删除记录时恢复数据,防患于未然

下面的演示的情况,都是基于在删除记录之前数据库有完整备份的情况:
下面以数据库test演示
1.对数据库进行完整备份(删除记录以前做的备份)

backup database test to disk='D:\BackUp\test16.bak' with format

2.备份日志(使用事务日志才能还原到指定的时间点,这步操作是灾难已经发生后进行的,亡羊补牢)

backup log test to disk='D:\BackUp\test_log_16.bak' WITH FORMAT

3.要先还原完全备份,以前的备份文件,这个文件必须是事务日志备份时间之前的(还原日志必须在还原完全备份bak的基础上进行还原)
这个还原文件test16.bak必须是误删除表记录之前的备份,还原删除的记录全靠日志文件在备份文件基础上制造记录
这条语句执行了,数据库状态变为:正在还原…

use master
go
RESTORE DATABASE test FROM DISK='D:\BackUp\test16.bak' WITH REPLACE,NORECOVERY

4.还原到指定时间点,根据备份的数据库日志文件还原。如果删除记录的时间是2020-10-22 17:32:26.100,设置的恢复时间点要比删除时间点靠前一些,这个跟数据库的时间精度有关

restore log test FROM DISK='D:\BackUp\test_log_16.bak' WITH RECOVERY,STOPAT='2020-10-22 17:30:40.100'

碰到这种情况,确保数据库只有你一个人访问

sql server 删除表恢复 sqlserver怎么恢复删除的数据_数据库删除记录恢复_02


解决:右键数据库,任务—>分离,在消息栏可以看到有多少个连接,然后勾选【删除连接】,点击确定,就可以独占访问数据库了,然后继续执行根据日志还原数据库

sql server 删除表恢复 sqlserver怎么恢复删除的数据_sqlserver_03