通过日志恢复SQL Server的历史数据
通过日志恢复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的历史数据的更多相关文章
- 恢复SQL Server被误删除的数据(再扩展)
恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的 ...
- 恢复SQL Server被误删除的数据
恢复SQL Server被误删除的数据 <恢复SQL Server被误删除的数据(再扩展)> 地址:http://www.cnblogs.com/lyhabc/p/4620764.html ...
- ApexSQL Log 从意外UPDATE和DELETE操作中恢复SQL Server数据
下载地址:https://www.apexsql.com/download.aspx 如何从意外UPDATE和DELETE操作中恢复SQL Server数据 ApexSQL Log 从意外UPDATE ...
- 读取iis日志到sql server
using Fasterflect; using System; using System.Collections.Generic; using System.Data.SqlClient; usin ...
- 如何恢复SQL Server 中的Master库
如何恢复SQL Server 2005中的Master库 2011-05-10 16:34 Vegas Lee 博客园 我要评论(0) 字号:T | T master库对于SQLServer来说, ...
- 云计算之路-阿里云-分享:通过RDS备份文件恢复SQL Server数据库
应用场景:假如您用了阿里云的SQL Server RDS,想在另外一台服务器上通过备份文件还原数据库至之前的某个时间点. 准备工作:准备1台用于还原的服务器,安装好SQL Server(2008或20 ...
- 用dos命令备份和恢复sql server 数据库
这里是批处理命令-----备份的 delete d:\restore\cw_ft.bak delete d:\restore\cw_sd.bak sqlcmd -i "bak.sql&quo ...
- asp.net core 2.1 增加Nlog日志到sql server数据库
一.增加引用 <PackageReference Include="NLog.Extensions.Logging" Version="1.2.1" /& ...
- SQLServer: 用 ApexSQLLog 恢复 SQL Server 数据
https://blog.csdn.net/yenange/article/details/50512312
随机推荐
- HTML5和CSS3的一些学习记录
1.引述块级文本的标签(blockquote): <blockquote cite="http://www.marktwainbooks.edu/"> <p> ...
- int 操作
int类型只能进行 + - * / % // ** # bit_length() 二进制长度
- Java可视操作界面例子
package rom; import java.lang.*; import java.awt.*; import java.awt.event.ActionEvent; import java.a ...
- [Android] SeekBar---可拖动进度条
SeekBar---可拖动进度条 ()setMax //设置SeekBar最大数值 ()setProgress //设置SeekBar当前数值 ()setSecondaryProgress//设置Se ...
- error C2011: “timespec”:“struct”类型重定义
error C2011: “timespec”:“struct”类型重定义 C++ pthread pthread.h 中的 timespec 和time.h 中的 结构定义重复了 ,同时两个头文件中 ...
- 24.API爬天气预报数据
1.免费注册API 地址: https://console.heweather.com/ 必须要用IE浏览器打开,注册邮箱激活,打开控制台,如图: 认证key是访问api的钥匙 2.阅读api说明开发 ...
- 【学习】Python解决汉诺塔问题
参考文章:http://www.cnblogs.com/dmego/p/5965835.html 一句话:学程序不是目的,理解就好:写代码也不是必然,省事最好:拿也好,查也好,解决问题就好! ...
- 纯CSS3实现垂直居中的九种方法
浏览时看到的资料,每个都做了测试,很好,就先收了~ 测试的是谷歌浏览器,没有任何问题,用360,IE11,火狐,搜狗浏览器做测试时,第五个方法在360,搜狗,和IE11有点问题,第七个在IE11有问题 ...
- openx
1openx 插件开发——终端用 2openx _金额 3openx ————带整理 4openx url 5Openx 2.8.x 在php5.4.x下数据统计不能正常显示解决方案 6openx改造 ...
- spark 练习
scala> import org.apache.spark.SparkContext import org.apache.spark.SparkContext scala> import ...