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 FilesMicrosoft SQL ServerSQL2008R2MSSQL10_50.MSSQLSERVER2008MSSQLBackupTest.bak 此方法需要关闭数据库应用,进行独占操作 select APP_NAME() 先执行语句,update T1 set c1 = 0 修改原数据

4.开始还原

先切换到 master 库

    备份当前数据库的事务日志
BACKUP LOG Test TO disk= C:Program FilesMicrosoft SQL ServerSQL2008R2MSSQL10_50.MSSQLSERVER2008MSSQLBackupTestL WITH NORECOVERY
    恢复一个误删除之前的完全备份
RESTORE DATABASE Test FROM DISK = C:Program FilesMicrosoft SQL ServerSQL2008R2MSSQL10_50.MSSQLSERVER2008MSSQLBackupTest.bak WITH NORECOVERY, REPLACE
    将数据库恢复至误删除之前的时间点
RESTORE LOG Test FROM DISK = C:Program FilesMicrosoft SQL ServerSQL2008R2MSSQL10_50.MSSQLSERVER2008MSSQLBackupTestL WITH STOPAT = 2022-5-10 15:59 , RECOVERY

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

5.稳妥方法

    将之前的完整备份和第一步的日志备份拷贝到本地 再执行第二步和第三步,还原后数据没问题再将数据拿到正式环境更新
经验分享 程序员 微信小程序 职场和发展