通过Transaction Log(fn_dblog)取回被删除的数据
最近跟 James 讨论为何「ApexSQL Log」这个工具可以读到被删除的数据呢?
原来它是透过 Transaction Log 来读取数据的!
于是透过 Transaction Log 到网络上有找到「SQL Server – How to find Who Deleted What records at What Time」直接透过 Transaction Log 来把被删除的数据给找回来!
蛮神奇的,只是Run在我的区分大小写的DB中会发生错误,因为有些字段名称大小写没有一致,于是就调整了一下!
刚开始在SQL 2012中运作都正常,到了SQL 2005及SQL 2008,删除的人员及时间居然没有显示出来。 www.it165.net
再检查一下,原来是因为sysusers跟fn_dblog中的Transaction SID Join不到,所以改用SUSER_SNAME也蛮清楚的!
另外,原本要输入数据库名称,改为自动取得现在执行的数据库。
修改后的SP,请从附件download,希望对大家有帮助,谢谢!
测试范例如下,
01.
--先建立测试的数据,并删除它
02.
Create
Table
tbl_Sample
03.
([ID]
int
identity(1,1) ,
04.
[
Name
]
varchar
(50),
05.
[T1]
int
)
06.
GO
07.
Insert
into
tbl_Sample
values
(
'Letter A'
, 11)
08.
Insert
into
tbl_Sample
values
(
'Letter B'
, 22)
09.
Insert
into
tbl_Sample
values
(
'Letter C'
, 33)
10.
11.
Select
*
from
tbl_Sample
12.
DELETE
FROM
tbl_Sample
13.
14.
--执行找回被删除数据的SP
15.
--1.输入删除的Table Name 从 Transaction Log 找所有被删除的数据
16.
EXEC
Recover_Deleted_Data_With_UID_Date_Time_Proc
'dbo.tbl_Sample'
17.
--2.输入删除的Table Name 从 Transaction Log 在时间区间中,找出所有被删除的数据
18.
EXEC
Recover_Deleted_Data_With_UID_Date_Time_Proc
'dbo.tbl_Sample'
,
'2013/05/23'
,
'2013/05/23'
执行SP后,会把被删除的数据给找出来,如下图,
通过Transaction Log(fn_dblog)取回被删除的数据的更多相关文章
- The transaction log for database 'xxxx' is full due to 'ACTIVE_TRANSACTION'
今天查看Job的History,发现Job 运行失败,错误信息是:“The transaction log for database 'xxxx' is full due to 'ACTIVE_TRA ...
- The transaction log for database 'tempdb' is full due to 'ACTIVE_TRANSACTION'
今天早上,Dev跟我说,执行query statement时出现一个error,detail info是: “The transaction log for database 'tempdb' is ...
- SQL Server Transaction Log Truncate && Shrink
目录 什么是事务日志 事务日志的组成 事务日志大小维护方法 Truncate Shrink 索引碎片 总结 什么是事务日志 Transaction log 是对数据库管理系统执行的一系列动作的记录 ...
- DB2 “The transaction log for the database is full” 存在的问题及解决方案
DB2在执行一个大的insert/update操作的时候报"The transaction log for the database is full.. "错误,查了一下文档是DB ...
- 分布式中的 transaction log
分布式中的 transaction log 在分布式系统中,有很多台node组成一个cluster,对于client 的一个写操作请求而言,在什么样的情况下,cluster告诉client此次写操作请 ...
- 测试用的数据库Transaction Log太大, 用于缩减它的脚本
记在这里, 备用. select name, recovery_model_desc from sys.databases where name = 'WSS_Content_1000' USE WS ...
- The transaction log for database 'XXX' is full due to 'ACTIVE_TRANSACTION'.
Msg 9002, Level 17, State 4, Line 4The transaction log for database 'Test' is full due to 'ACTIVE_TR ...
- Replication:The transaction log for database 'tempdb' is full due to 'ACTIVE_TRANSACTION'
今天早上,Dev跟我说,执行query statement时出现一个error,detail info是: “The transaction log for database 'tempdb' is ...
- what can we do if just only want to truncate transaction log without backup ?
n some circumstances, we just want to truncate transaction log without backup and refuce change data ...
随机推荐
- hdu4758 Walk Through Squares (AC自己主动机+DP)
Walk Through Squares Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others ...
- UVA 1364 - Knights of the Round Table (获得双连接组件 + 二部图推理染色)
尤其是不要谈了些什么,我想A这个问题! FML啊.....! 题意来自 kuangbin: 亚瑟王要在圆桌上召开骑士会议.为了不引发骑士之间的冲突. 而且可以让会议的议题有令人惬意的结果,每次开会前都 ...
- NSIS:禁止多次安装实例
原文 NSIS:禁止多次安装实例 为了防止用户重复安装软件,我们可以加入以下的判断来进行限制. 第一步:在安装脚本中,将是否已安装的标记Installed写入注册表中: 1 Section -Post ...
- S3C2416裸机开发系列19_Fatfs播放录像wav音频文件
S3C2416裸机开发系列19 Fatfs播放录像wav音频文件 国际象棋男孩 1048272975 多媒体资源,一般都是以文件的形式存储在固化存储器中.Fatfs所支持的fat32为windo ...
- JavaEE(20) - Web层和EJB的整合(Entity Manager)
1. 使用容器管理的EntityManager 2. 使用应用程序管理的EntityManager 3. 使用ThreadLocal保证EntityManager的线程安全 4. EAO封装JPA 5 ...
- The Toast in android
Toast can show the help/prompts to user. There have five effect of toast as bellow: 1.default effect ...
- CocoaChina 第四个测试
1. iOS同意近期本地通知数量最大为多少? A.64 B.32 C.128 D.16 2. int x = 1; int y = 2; int z = x^y*y; NSLog(@"%d& ...
- Python于*args 和**kwargs使用
1,*args 当量list名单 def fun_args(farg, *args): print "arg:", farg for value in args: print & ...
- 一个用于每一天JavaScript示例-SVG中间javaScript画廊
<?xml version="1.0" standalone="no"? > <!DOCTYPE svg PUBLIC "-//W3 ...
- .net Framework各个版本之间的发展
原文:.net Framework各个版本之间的发展 上个星期看到了.NET 4.0框架退休日期逐渐临近文章,发现自己一直在使用NET FrameWork,身为一个NET程序员,里面大概的区别自己还 ...