SQL Server:如何使用fn_dblog检索最近12小时的日志?

时间:2016-10-14 17:26:56

标签: sql-server transaction-log

在MS SQL 2012中意外地使列无效,我正在研究如何首次使用fn_dblog。我之前已经备份了表格,并在今天早上将其删除了。我正在使用完全恢复模式(以下代码,以供将来想要查找的人):

SELECT name, recovery_model_desc  
   FROM sys.databases  
      WHERE name = 'model' ;  
GO

是否可以回滚过去12小时内提交的DROP TABLE事务?

我发现这笔交易似乎正是我想要的。但是只发现了最后3431行:

SELECT [Current LSN],
       [Operation],
       [Transaction ID],
       [Parent Transaction ID],
       [Begin Time],
       [Transaction Name],
       [Transaction SID]
FROM fn_dblog(NULL, NULL)
WHERE [Operation] = 'LOP_BEGIN_XACT'

如何使用此查询返回先前的交易?

我在这里不熟悉的领域。我还应该考虑什么?

  • 如何知道日志是否存在且未被截断?
  • 恢复表与列删除是否更容易?
  • 使用fn_fblog有什么危险?在博客文章中我找到了这个(https://raresql.com/2013/04/15/sql-server-undocumented-function-fn_dblog/):

    "毫无疑问,fn_dblog是一个有用的未记录的函数,但除非另有要求,否则不要在生产服务器中使用此函数。"这是什么原因?

===编辑===

另外,一篇非常有用的文章在这里: MS SQL日志记录的一个非常有用的介绍: http://www.sqlshack.com/reading-sql-server-transaction-log/

0 个答案:

没有答案