通过日志恢复SQL Server的历史数据 Posted on 2008-11-14 21:47 代码乱了 阅读(4658) 评论(10)  编辑 收藏

园子里前段时间发过一篇通过日志恢复MSSQL数据例子 ,我总结一下

通过日志还原,最重要的是:

1.必须有一个完整的备份,且这个备份必须是在修改、删除数据之前做的。

2.在更新、删除数据之后,做日志备份,该log备份将用于还原之前的数据

下面步骤的目的:还原被删除的表

在SQL Server Management可视化操作步骤:

1.创建数据库并完整备份:


--创建测试数据库CREATE DATABASE Db GO
--对数据库进行备份BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT GO

2.创建一个空表

--创建测试表CREATE TABLE Db.dbo.TB_test(ID int) 

3.删除刚刚建的这个空表,假设这个表被误删除了

--假设我们现在误操作删除了 Db.dbo.TB_test 这个表DROP TABLE Db.dbo.TB_test 

到了这一步,我们想还原被删除的TB_Test表,这个时候,记住删除表之前的时间,后面会用到

这个时候,需要备份日志,可以用SQL Management界面操作备份,也可以用T-SQL备份

BACKUP LOG Db TO DISK='c:\db_log.bak' WITH FORMAT GO

4.还原数据库,可以替换原来数据库,或者还原成一个新的数据库DB1,这里新的数据库DB1

如果是界面操作:

“任务”- “还原” - “数据库”:

在“常规”选择页中的设备后面选择我们之前的完整备份:db.bak,

目标数据库:DB1

在“恢复状态”下选择第2项“不对数据库执行任何操作,不回滚提交的事务。。” ,点确定后,可以看到DB1数据库的状态变成“正在还原。。”

接下来:在DB1数据库上点右键--还原--事务日志,选择刚刚我们删除表后备份的事务日志:db_log.bak,

在下面选择时间点,这个时间是上面我们记住的删除表之前的时间,点击确定后,还原成功。可以看到被删除的表又回来了。

完整的脚本:


--创建测试数据库CREATE DATABASE Db GO
--对数据库进行备份BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT GO
--创建测试表CREATE TABLE Db.dbo.TB_test(ID int)
--延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)WAITFOR DELAY '00:00:01'GO
--假设我们现在误操作删除了 Db.dbo.TB_test 这个表DROP TABLE Db.dbo.TB_test
--保存删除表的时间SELECT dt=GETDATE() INTO # GO
--在删除操作后,发现不应该删除表 Db.dbo.TB_test--下面演示了如何恢复这个误删除的表 Db.dbo.TB_test--首先,备份事务日志(使用事务日志才能还原到指定的时间点)BACKUP LOG Db TO DISK='c:\db_log.bak' WITH FORMAT GO
--接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)RESTORE DATABASE Db FROM DISK='c:\db.bak' WITH REPLACE,NORECOVERY GO
--将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早DECLARE @dt datetimeSELECT @dt=DATEADD(ms,-20,dt) FROM #  --获取比表被删除的时间略早的时间RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=@dtGO
--查询一下,看表是否恢复SELECT * FROM Db.dbo.TB_test
/*--结果: ID           ----------- 
(所影响的行数为 0 行) --*/
--测试成功GO
--最后删除我们做的测试环境DROP DATABASE Db DROP TABLE #

本文代码参考csdn的帖子:http://topic.csdn.net/u/20080321/12/f5d33007-9bea-43f1-844b-914e68de727d.html

通过日志恢复SQL Server的历史数据的更多相关文章

  1. 恢复SQL Server被误删除的数据(再扩展)

    恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的 ...

  2. 恢复SQL Server被误删除的数据

    恢复SQL Server被误删除的数据 <恢复SQL Server被误删除的数据(再扩展)> 地址:http://www.cnblogs.com/lyhabc/p/4620764.html ...

  3. ApexSQL Log 从意外UPDATE和DELETE操作中恢复SQL Server数据

    下载地址:https://www.apexsql.com/download.aspx 如何从意外UPDATE和DELETE操作中恢复SQL Server数据 ApexSQL Log 从意外UPDATE ...

  4. 读取iis日志到sql server

    using Fasterflect; using System; using System.Collections.Generic; using System.Data.SqlClient; usin ...

  5. 如何恢复SQL Server 中的Master库

    如何恢复SQL Server 2005中的Master库 2011-05-10 16:34 Vegas Lee 博客园 我要评论(0) 字号:T | T   master库对于SQLServer来说, ...

  6. 云计算之路-阿里云-分享:通过RDS备份文件恢复SQL Server数据库

    应用场景:假如您用了阿里云的SQL Server RDS,想在另外一台服务器上通过备份文件还原数据库至之前的某个时间点. 准备工作:准备1台用于还原的服务器,安装好SQL Server(2008或20 ...

  7. 用dos命令备份和恢复sql server 数据库

    这里是批处理命令-----备份的 delete d:\restore\cw_ft.bak delete d:\restore\cw_sd.bak sqlcmd -i "bak.sql&quo ...

  8. asp.net core 2.1 增加Nlog日志到sql server数据库

    一.增加引用 <PackageReference Include="NLog.Extensions.Logging" Version="1.2.1" /& ...

  9. SQLServer: 用 ApexSQLLog 恢复 SQL Server 数据

    https://blog.csdn.net/yenange/article/details/50512312

随机推荐

  1. Windows安装部署Tensorflow过程中的问题处理

    1 在配置Tensorflow过程中有一行命令是 python object_detection/builders/model_builder_test.py 过程中出现了 NameError: na ...

  2. 用tmux工具给linux命令行分栏

    介绍 有时候我们需要在命令行里同时开多个程序,但是每个程序都会占用命令行,这时候可以用tmux,给命令行界面分栏. 基本概念 tmux是分多层的 会话>窗口(我下文称作:页)>面板(或者叫 ...

  3. hadoop机群 运行wordcount出现 Input path does not exist: hdfs://ns1/user/root/a.txt

    机群搭建好,执行自带wordcount时出现: Input path does not exist: hdfs://ns1/user/root/a.txt 此错误. [root@slave1 hado ...

  4. JavaBean转xml

    JavaBean转xml的工具就是:XStream XStream的作用: XStream可以把JavaBean对象转换成XML!通常服务器向客户端响应的数据都是来自数据库的一组对象,当我们不能直接把 ...

  5. MySQL管理工具HeidiSQL

    MySQL管理工具HeidiSQL   HeidiSQL 是一个功能非常强大的 MySQL 客户端软件.它是德国程序员Ansgar Becker和几个Delphi程序员开发的一个开源工具.要通过Hei ...

  6. 百度 OCR API 的使用以及与 Tesseract 的简单对比

    目录 百度 OCR API 初探 用 Python 调用百度 OCR API 与 Tesseract 的简单对比 百度 OCR API 初探 近日得知百度在其 APIStore 上开放了 OCR 的 ...

  7. spring boot 下载

  8. java.lang.ClassNotFoundException: org.thymeleaf.spring5.view.ThymeleafViewRe。。。。。。。。。。。

    直接上代码问题: java.lang.IllegalStateException: Failed to introspect Class [org.springframework.boot.autoc ...

  9. Eureka 客户端启动报错误 Cannot determine embedded database driver class for database type NONE

    用这种数据库配置就是死活连不上数据库 提示:Cannot determine embedded database driver class for database type NONE 解决方式: 启 ...

  10. win7 CMD登录本机MySQL数据库管理