sqlserver恢复已经删除的表记录

在发生删除操作后,发现要找回删除的记录,此时灾难发生,为了挽回记录,操作步骤如下:
首先保证数据恢复模式是完整的,然后才能做下面的操作:
在这里插入图片描述

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

这篇博文是用ApexSQL Log工具读取日志恢复数据:
https://blog.csdn.net/u011511086/article/details/109272214

强烈建议数据库做个定时任务,每日凌晨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' 

碰到这种情况,确保数据库只有你一个人访问
在这里插入图片描述
解决:右键数据库,任务—>分离,在消息栏可以看到有多少个连接,然后勾选【删除连接】,点击确定,就可以独占访问数据库了,然后继续执行根据日志还原数据库
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王焜棟琦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值