首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跟踪事务回滚

跟踪事务回滚
EN

Database Administration用户
提问于 2016-11-30 17:17:47
回答 2查看 3.2K关注 0票数 6

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

我使用Server来监视TM: Rollback Tran completed事件,它显示了每分钟都会发生几十个这样的事件,但它没有给我任何指示,说明回滚了哪些事务,哪些对象受到回滚的影响,以及回滚发生的原因。简而言之,它的用处似乎非常有限。

例如,如果我还试图监视SQL:StmtStarting,以便为回滚提供一些上下文,那么这个繁忙的环境中存在太多的噪音,无法确定是哪个语句负责回滚。

我还试着运行声明

代码语言:javascript
复制
SELECT *
FROM fn_dblog (NULL, NULL)
WHERE Operation = 'LOP_ABORT_XACT';

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

是否有任何方法可以生成显示回滚事务的报告?

蒂娅!

EN

回答 2

Database Administration用户

回答已采纳

发布于 2018-02-19 17:37:51

以下是预扩展事件的实现方式。

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

票数 1
EN

Database Administration用户

发布于 2017-04-06 14:37:30

我将在这里尝试一些可能不是更好的方法,可能会对您的服务器产生性能影响,但我仍然认为它比什么都没有好。在sys.dm_exec_requests dmv中,您具有查询的状态。当它回滚时,它会显示“回滚”。如果您创建了一个不断查看该DVM并收集具有该状态的任何请求的SQL_handle (以及更多的信息)的作业,那么这可能是一个很好的起点。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/156801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档