SqlServer误删后,还原某个时间点之前的数据

1.创建表,添加模拟数据#

  • 表名:T1

  • 列名:c1

在这里插入图片描述

2.还原的语句#

-- a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份的路径+文件名' WITH NORECOVERY

-- b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份的路径+文件名' WITH NORECOVERY, REPLACE

-- c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM DISK = N'第一步的日志备份路径+文件名' WITH STOPAT = N'误删除之前的时间点(2022-5-10 15:31)' , RECOVERY

3.准备工作#

  • 手动把当前数据库备份(一定要是 .bak 文件),提前准备好,多久之前的都可以,只要是完整备份
  • 文件备份的路径:C:\Program Files\Microsoft SQL Server\SQL2008R2\MSSQL10_50.MSSQLSERVER2008\MSSQL\Backup\Test.bak
  • 此方法需要关闭数据库应用,进行独占操作 select APP_NAME()
  • 先执行语句,update T1 set c1 = 0 修改原数据

4.开始还原#

先切换到 master 库

  • 备份当前数据库的事务日志
BACKUP LOG Test TO disk= 'C:\Program Files\Microsoft SQL Server\SQL2008R2\MSSQL10_50.MSSQLSERVER2008\MSSQL\Backup\TestL' WITH NORECOVERY

在这里插入图片描述

  • 恢复一个误删除之前的完全备份
RESTORE DATABASE Test FROM DISK = 'C:\Program Files\Microsoft SQL Server\SQL2008R2\MSSQL10_50.MSSQLSERVER2008\MSSQL\Backup\Test.bak' WITH NORECOVERY, REPLACE

在这里插入图片描述

  • 将数据库恢复至误删除之前的时间点
RESTORE LOG Test FROM DISK = 'C:\Program Files\Microsoft SQL Server\SQL2008R2\MSSQL10_50.MSSQLSERVER2008\MSSQL\Backup\TestL' WITH STOPAT = '2022-5-10 15:59' , RECOVERY

在这里插入图片描述
在这里插入图片描述

以上方法是在原环境下操作的,避免还原失败导致更多问题出现,最好参考第五步骤

5.稳妥方法#

  • 将之前的完整备份和第一步的日志备份拷贝到本地

  • 再执行第二步和第三步,还原后数据没问题再将数据拿到正式环境更新

作者:DotNeter-Hpf

出处:https://www.cnblogs.com/DotNeter-Hpf/p/16620159.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

客官,点个推荐再走可好

posted @   DotNeter-Hpf  阅读(520)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示