跟踪事务回滚

pau*_*ulH 6 profiler sql-server-2008-r2 rollback

我有一个非常繁忙的数据库,我被要求寻找回滚的事务。

我使用 SQL Server Profiler 来监视TM: RollbackTran Completed 事件,这表明每分钟都会发生几十个这样的事件,但它没有给我任何关于正在回滚的事务、回滚影响的对象的任何指示,或者回滚发生的原因。简而言之,它的用途似乎非常有限。

例如,如果我还尝试进行监控,以便为SQL:StmtStarting回滚提供一些上下文,那么在这个繁忙的环境中只会有太多噪音,无法识别哪个语句负责回滚。

我也试过运行语句

SELECT *
FROM fn_dblog (NULL, NULL)
WHERE Operation = 'LOP_ABORT_XACT';
Run Code Online (Sandbox Code Playgroud)

但这并没有返回任何结果(考虑到 SQL Profiler 报告的回滚次数,这似乎很奇怪)。

有什么方法可以生成显示已回滚事务的报告?

蒂亚!

Dav*_*oft 1

这是执行此操作的预扩展事件方法。

不要以交互方式使用 Profiler,而是使用它来生成写入文件的服务器端 SQL 跟踪。运行跟踪一段时间后,您可以查询跟踪文件和/或将跟踪文件加载到表中并查询这些文件。找到有回滚的会话,然后按顺序查询该会话的所有事件。