使用TM REQUEST和计划句柄0x0000挂起的会话


12

我们有一个定期事件,许多请求都挂在TM REQUEST上(来自sys.dm_os_waiting_tasks),并且没有任何进展。KILL对受影响session_id者无能为力

服务器运行数据库镜像(2008R2)。暂停和恢复镜像可解决此问题。

处于此状态的会话是无法杀死的。镜子上的负载是正常的,不是突发性的。一旦大量连接卡在此状态,系统将冻结,镜像将停止复制(所有查询均被阻止)。

任何人以前都看过这个,知道是什么原因造成的吗?错误日志中没有任何内容。


镜像配置为哪种模式?发生此问题时的等待类型是什么?是否可能在其中配置了SQL Server fiber mode
Kin Shah 2014年

镜像处于同步模式。没有纤维。没有其他等待
Thomas Kejser 2014年

什么是resource_description设置为?
Thomas Stringer 2014年

我不久前就注意到了这一点(我们运行异步,但是在执行故障转移或修补等操作时将其更改为同步)。在数据库完全同步之后,spid会保留吗?
Subhash Pant 2014年

暂停后SPID消失。但是当问题继续发生时,它们是无法杀死的
Thomas Kejser 2014年

Answers:


9

TM代表事务管理器。当前命令被设置为TM Request意味着该线程当前正在为DTC(分布式事务处理协调器)请求提供服务,以征募DTC事务,从DTC事务中删除事务或提交它,等等。数据库镜像不支持分布式事务,因为它不能保证事务的完整性。禁止您的DTC交易,这应该消失了。


Microsoft SQL支持部门的信用S. Ashwin,同事
stacylaray 2014年

我将如何诊断这是哪里来的?服务器上的MSDTC日志为空
Thomas Kejser 2014年

如果我在同一实例上有跨数据库事务,DTC可以参与吗?
Thomas Kejser 2014年

@ThomasKejser- sp_configure 'Ad Hoc Distributed Queries'打开吗?-也许某些系统使用OPENQUERY临时语句或其他方法发布跨数据库事务?
Max Vernon

1
跨数据库事务使用与DTC事务相同的基本代码。主要区别是缺乏DTC协调经理。相反,SQL Server会选择事务中最低的DBID作为事务协调器。
stacylaray 2014年

0

Service Broker使用SQL Server事务管理器而不是Microsoft分布式事务处理协调器(MS DTC)。事务不是跨实例的,而是跨实例的。您正在使用Service Broker吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.