Sessione sospesa con TM REQUEST e maniglia di piano 0x0000


12

Abbiamo un evento periodico in cui molte connessioni si bloccano su TM REQUEST (da sys.dm_os_waiting_tasks) e non fanno progressi. KILLsull'affetto session_idnon fa nulla

Il server esegue il mirroring del database (2008R2). La sospensione e la ripresa del mirroring risolve il problema quando si verifica.

La sessione bloccata in questo stato è inammissibile. Il carico sullo specchio è il solito, non esplosivo. Una volta bloccato un numero elevato di connessioni in questo stato, il sistema si blocca e il mirror smette di replicarsi (tutte le query vengono bloccate).

Qualcuno l'ha visto prima e sai cosa lo sta causando? Non c'è nulla nei log degli errori.


In quale modalità è configurato il mirroring? Quali sono i tipi di attesa quando si verifica questo problema? Qualche possibilità in cui sia configurato SQL Server fiber mode?
Kin Shah,

Il mirroring è in modalità Sync. Senza fibre. Nessun'altra attesa
Thomas Kejser,

A cosa era resource_descriptiondestinato?
Thomas Stringer,

L'ho notato anche non troppo tempo fa (eseguiamo l'asincronizzazione, ma lo cambiamo per sincronizzarlo quando eseguiamo il failover, o patch, ecc.). Lo spid rimane dopo che i DB sono completamente sincronizzati?
Subhash Pant,

Lo SPID scompare dopo la pausa. Ma sono unkillable mentre il problema sta succedendo
Thomas Kejser

Risposte:


9

TM sta per Transaction Manager. Il comando corrente impostato su Richiesta TM significa che il thread sta attualmente servendo una richiesta DTC (Distributed Transaction Coordinator), sia per arruolarsi in una transazione DTC, sia per difetto da essa, o per impegnarla, o così via. Le transazioni distribuite non sono supportate per il mirroring del database perché non possono garantire l'integrità delle transazioni. Sopprimi le tue transazioni DTC e questo dovrebbe andare via.


Credit S. Ashwin, collega, supporto Microsoft SQL
stacylaray

Come diagnosticherei da dove proviene? I registri MSDTC sul server sono vuoti
Thomas Kejser il

Il DTC potrebbe essere coinvolto se ho una transazione tra database nella stessa istanza?
Thomas Kejser,

@ThomasKejser - è attivo sp_configure 'Ad Hoc Distributed Queries'? - Forse un sistema sta emettendo transazioni tra database utilizzando OPENQUERYistruzioni ad hoc o qualcosa del genere?
Max Vernon,

1
Le transazioni tra database utilizzano lo stesso codice fondamentale utilizzato per le transazioni DTC. La differenza principale è la mancanza del responsabile del coordinamento DTC. Invece SQL Server sceglie il DBID più basso nella transazione come coordinatore della transazione.
stacylaray,

0

Service Broker utilizza il gestore delle transazioni dei server SQL anziché Microsoft Distributed Transaction Coordinator (MS DTC). La transazione non è tra istanze ma all'interno di un'istanza. Stai utilizzando Service Broker?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.