如何阅读.TRN文件数据?

时间:2012-03-06 15:44:07

标签: sql-server sql-server-2008 tsql

我使用两个不同的.BAK文件(不同的夜间备份文件)恢复了两个数据库

我有一行数据从最新恢复的.BAK中消失。

需要找出原因。

我有没有办法阅读/浏览.TRN数据,看看哪些用户操作可能导致了这个问题?

2 个答案:

答案 0 :(得分:4)

查看Apexsql,它们提供了阅读事务日志的工具。但它不是免费软件。

SQl Server中还有一个未记录的功能。有关详细信息,请参阅This Post

DBCC LOG(databasename, typeofoutput)

答案 1 :(得分:2)

Paul Randal写了一篇关于使用未记录的函数find out who dropped a table using the transaction log的文章,你或许可以使用相同的概念。

在他的帖子中他正在寻找一张丢弃的桌子,所以我在我的本地系统上玩它,发现你会过滤WHERE [Tranaction Name] = 'DELETE',从表中删除一条记录。

所以这个查询:


SELECT [Current LSN], [Begin Time], SPID, [Database Name], [Transaction Begin], [Transaction ID], [Transaction Name], [Transaction SID], Context, Operation
FROM ::fn_dblog (null, null)
WHERE [Transaction Name] = 'DELETE'
GO

返回此输出


Current LSN Begin Time  SPID    Database Name   Transaction Begin   Transaction ID  Transaction Name    Transaction SID Context Operation
00000474:00000239:0001  2012/03/06 10:09:19:547 58  NULL    NULL    0001:000a67be   DELETE  0x010500000000000515000000628ADB6E31CC6098F269B2B9F8060000  LCX_NULL    LOP_BEGIN_XACT