通过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后,会把被删除的数据给找出来,如下图,

\  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值