Wenn ich die beiden folgenden Abfragen ausführe,
SELECT
session_id, transaction_id
FROM sys.dm_tran_session_transactions;
UND
SELECT
session_id, request_id, at.transaction_id
FROM sys.dm_tran_active_transactions at
JOIN sys.dm_exec_requests r
ON r.transaction_id = at.transaction_id;
Ich habe die BOL für 1 und 2 gelesen , sehe aber keine klare Erklärung dafür, warum der Unterschied auftreten würde.
Ich bekomme unterschiedliche Ergebnisse. Die erstere Abfrage gibt keine Ergebnisse zurück, die letztere gibt aktive Transaktionen mit Sitzungs- und Transaktions-IDs zurück. Das request_id
ist 0, was meiner Meinung nach bedeutet, dass es die einzige Anfrage der Sitzung ist. Könnte mir jemand helfen zu verstehen, warum es einen Unterschied zwischen den beiden Konzepten gibt, die ich oben abgefragt habe?
BEARBEITEN
Ich habe gerade die Abfragen erneut durchgeführt und erhalte jetzt ein Ergebnis für die erste DMV, die eine enthält session_id
, die in der zweiten Ergebnismenge nicht enthalten ist.
quelle
sys.dm_tran_session_transactions
DMV gibt nur Zeilen für Sitzungen aus, die KEINE Sitzungen auf Systemebene sind.Beide DMVs sind eine Momentaufnahme dessen, was genau zum Zeitpunkt ihrer Ausführung geschieht. Es ist daher
sehrwahrscheinlich, dass auf einem ausgelasteten System ausgeführt wirdkönnte unterschiedliche Ergebnismengen anzeigen.
quelle