我有一个非常繁忙的数据库,有人要求我查找回滚的事务。
我使用Server来监视TM: Rollback Tran completed事件,它显示了每分钟都会发生几十个这样的事件,但它没有给我任何指示,说明回滚了哪些事务,哪些对象受到回滚的影响,以及回滚发生的原因。简而言之,它的用处似乎非常有限。
例如,如果我还试图监视SQL:StmtStarting,以便为回滚提供一些上下文,那么这个繁忙的环境中存在太多的噪音,无法确定是哪个语句负责回滚。
我还试着运行声明
SELECT *
FROM fn_dblog (NULL, NULL)
WHERE Operation = 'LOP_ABORT_XACT';但是这没有返回任何结果(考虑到SQL报告的回滚次数,这似乎很奇怪)。
是否有任何方法可以生成显示回滚事务的报告?
蒂娅!
发布于 2018-02-19 17:37:51
发布于 2017-04-06 14:37:30
我将在这里尝试一些可能不是更好的方法,可能会对您的服务器产生性能影响,但我仍然认为它比什么都没有好。在sys.dm_exec_requests dmv中,您具有查询的状态。当它回滚时,它会显示“回滚”。如果您创建了一个不断查看该DVM并收集具有该状态的任何请求的SQL_handle (以及更多的信息)的作业,那么这可能是一个很好的起点。
https://dba.stackexchange.com/questions/156801
复制相似问题