我使用两个不同的.BAK文件(不同的夜间备份文件)恢复了两个数据库
我有一行数据从最新恢复的.BAK中消失。
需要找出原因。
我有没有办法阅读/浏览.TRN数据,看看哪些用户操作可能导致了这个问题?
答案 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