Sesión colgada con TM SOLICITUD y manejador de plan 0x0000

12

Tenemos un evento periódico en el que muchas conexiones cuelgan de TM REQUEST (from sys.dm_os_waiting_tasks) y no avanzan. KILLen el afectado session_idno hace nada

El servidor ejecuta la creación de reflejo de la base de datos (2008R2). Pausar y reanudar la duplicación corrige el problema cuando ocurre.

La sesión atascada en este estado es imposible de matar. La carga en el espejo es la habitual, no estalló. Una vez que una gran cantidad de conexiones están bloqueadas en este estado, el sistema se congela y el espejo deja de replicarse (todas las consultas se bloquean).

¿Alguien ha visto esto antes y sabe qué lo está causando? No hay nada en los registros de errores.

Thomas Kejser
fuente
¿En qué modo está configurada la duplicación? ¿Cuáles son los tipos de espera cuando se produce este problema? ¿Hay alguna posibilidad de que SQL Server esté configurado fiber mode?
Kin Shah
La duplicación está en modo de sincronización. Sin fibras No hay otras esperas
Thomas Kejser
¿Para qué fue el resource_descriptionset?
Thomas Stringer el
Noté esto también no hace mucho tiempo (ejecutamos asíncrono, pero lo cambiamos para sincronizar cuando hacemos conmutación por error, parches, etc.). ¿El spid permanece después de que los DB están completamente sincronizados?
Subhash Pant
El SPID desaparece después de la pausa. Pero son imposibles de matar mientras el problema continúa
Thomas Kejser

Respuestas:

9

TM significa Transaction Manager. El comando actual que se establece en TM Request significa que el hilo actualmente está atendiendo una solicitud de DTC (Coordinador de transacciones distribuidas), ya sea para alistarse en una transacción de DTC, o abandonarla, o confirmarla, etc. Las transacciones distribuidas no son compatibles con el reflejo de la base de datos porque no puede garantizar la integridad de la transacción. Suprima sus transacciones de DTC y esto debería desaparecer.

Stacylaray
fuente
Credit S. Ashwin, colega, Soporte de Microsoft SQL
stacylaray
¿Cómo diagnosticaría de dónde viene esto? Los registros de MSDTC en el servidor están vacíos
Thomas Kejser
¿Podría involucrarse el DTC si tengo una transacción de base de datos cruzada en la misma instancia?
Thomas Kejser
@ThomasKejser: ¿está activado sp_configure 'Ad Hoc Distributed Queries'? - ¿Quizás algún sistema está emitiendo transacciones entre bases de datos utilizando OPENQUERYdeclaraciones ad-hoc o algo así?
Max Vernon el
1
Las transacciones de bases de datos cruzadas usan el mismo código fundamental que las transacciones DTC. La principal diferencia es la falta del gerente de coordinación de DTC. En cambio, SQL Server elige el DBID más bajo en la transacción para ser el coordinador de la transacción.
stacylaray
0

Service Broker utiliza el administrador de transacciones de Servidores SQL en lugar del Coordinador de transacciones distribuidas de Microsoft (MS DTC). La transacción no es a través de instancias sino dentro de una instancia. ¿Estás utilizando Service Broker?

Stacylaray
fuente