首页 > 代码库 > 通过Transaction Log(fn_dblog)取回被删除的数据
通过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,希望对大家有帮助,谢谢!
测试范例如下,
view sourceprint?
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)取回被删除的数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。