我们在 MSDTC 中显示了一些活跃的交易,这些交易已经存在很长时间并且不会消失。它们不是孤立的或有疑问的,只是看起来正常的活跃交易。
我们正试图弄清楚它们是什么以及它们存在的原因。
为此,我试图找到一种方法将 MSDTC 事务列表(组件服务 -> 我的电脑 -> 分布式事务协调器 -> 事务列表)中显示的这些活动事务之一映射到所有信息微软 SQL 服务器。
显然,我所需要的只是一个 UOW ID。
经过几个小时的研究,我在 sys.dm_tran_locks 之外找不到任何包含此信息的内容。我在 sys.dm_tran_locks 上遇到的问题是我的事务没有显示,大概是因为它们当前没有持有任何锁。
其他重要信息:SQL Server 2005。(是的,2005 :( ) 同样,没有什么是“孤立的”或“有疑问的”。交易只是显示为活动状态,但它们永远留在那里。没有集群或任何其他异国情调。这都是非常普通的 SQL Server 2005 标准版。
编辑:我还应该注意到我尝试过:
* SP_WhoIsActive (both with default settings and with more info gathering turned on)
* sys.dm_tran_locks
* sys.dm_exec_sessions
* sys.dm_exec_requests.
* sys.dm_tran_database_transactions
* sys.dm_tran_database_transactions
* sys.dm_tran_active_transactions
我开始认为您无法从这里到达那里 ;-) 同样,我想将 MSDTC 中的 UOW 与 SQL Server 中的 UOW 相关联,显然,分布式事务仍然处于活动状态但没有锁定。
根据要求,这是 MSDTC 的屏幕截图:
sys.dm_tran_active_transactions
您可以在DMV中获得您正在寻找的相关性。该列是transaction_uow
。http://msdn.microsoft.com/en-us/library/ms174302.aspx