Sitzung hängt mit TM-ANFRAGE und Plan-Handle 0x0000

12

Wir haben ein regelmäßiges Ereignis, bei dem viele Verbindungen an TM REQUEST hängen (von sys.dm_os_waiting_tasks) und keine Fortschritte machen. KILLAuf die Betroffenen session_idwirkt nichts

Der Server führt die Datenbankspiegelung aus (2008R2). Das Anhalten und Fortsetzen der Spiegelung behebt das Problem, wenn es auftritt.

Die in diesem Zustand festgefahrene Sitzung kann nicht beendet werden. Die Belastung des Spiegels ist die übliche, nicht platzende. Sobald eine große Anzahl von Verbindungen in diesem Zustand blockiert ist, friert das System ein und der Spiegel wird nicht mehr repliziert (alle Abfragen werden blockiert).

Hat jemand das schon einmal gesehen und weiß, was es verursacht? In den Fehlerprotokollen ist nichts.

Thomas Kejser
quelle
Als welchen Modus ist die Spiegelung konfiguriert? Was sind die Wartezeiten, wenn dieses Problem auftritt? Gibt es eine Chance, dass SQL Server konfiguriert ist fiber mode?
Kin Shah
Die Spiegelung befindet sich im Synchronisierungsmodus. Keine Fasern. Keine weiteren Wartezeiten
Thomas Kejser
Was war das resource_descriptionSet?
Thomas Stringer
Ich habe das auch vor nicht allzu langer Zeit bemerkt (wir führen Async aus, aber wir ändern es in Sync, wenn wir Failover oder Patches usw. ausführen). Verbleibt die Spid, nachdem die DBs vollständig synchronisiert wurden?
Subhash Pant
Die SPID verschwindet nach der Pause. Aber sie sind nicht zu töten, während das Problem weitergeht
Thomas Kejser

Antworten:

9

TM steht für Transaction Manager. Der aktuelle Befehl, der auf TM-Anforderung festgelegt ist, bedeutet, dass der Thread derzeit eine DTC-Anforderung (Distributed Transaction Coordinator) bearbeitet, um eine DTC-Transaktion zu registrieren oder einen Fehler daraus zu beheben oder ein Commit auszuführen. Verteilte Transaktionen werden für die Datenbankspiegelung nicht unterstützt, da dadurch die Transaktionsintegrität nicht garantiert werden kann. Unterdrücken Sie Ihre DTC-Transaktionen und dies sollte verschwinden.

Stacylaray
quelle
Credit S. Ashwin, Kollege, Microsoft SQL-Support
stacylaray
Wie würde ich diagnostizieren, woher das kommt? Die MSDTC-Protokolle auf dem Server sind leer
Thomas Kejser
Könnte der DTC beteiligt sein, wenn ich eine datenbankübergreifende Transaktion auf derselben Instanz habe?
Thomas Kejser
@ThomasKejser - ist sp_configure 'Ad Hoc Distributed Queries'an? - Möglicherweise gibt ein System datenbankübergreifende Transaktionen mit OPENQUERYAd-hoc-Anweisungen aus oder so?
Max Vernon
1
Datenbankübergreifende Transaktionen verwenden denselben grundlegenden Code wie DTC-Transaktionen. Der Hauptunterschied ist das Fehlen des DTC-Koordinationsmanagers. Stattdessen wählt SQL Server die niedrigste DBID in der Transaktion als Transaktionskoordinator.
Stacylaray
0

Service Broker verwendet den SQL Server-Transaktionsmanager anstelle von Microsoft Distributed Transaction Coordinator (MS DTC). Die Transaktion ist nicht instanzübergreifend, sondern innerhalb einer Instanz. Verwenden Sie Service Broker?

Stacylaray
quelle