sys.dm_tran_top_version_generators (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Gibt eine virtuelle Tabelle für die Objekte zurück, die die meisten Versionen im Versionsspeicher erzeugen. sys.dm_tran_top_version_generators gibt die obersten 256 aggregierten Datensatzlängen zurück, die nach dem database_id und rowset_id gruppiert sind. sys.dm_tran_top_version_generators ruft Daten ab, indem die dm_tran_version_store virtuelle Tabelle abgefragt wird. sys.dm_tran_top_version_generators ist eine ineffiziente Ansicht, die ausgeführt werden kann, da diese Ansicht den Versionsspeicher abfragt und der Versionsspeicher sehr groß sein kann. Die Verwendung dieser Funktion wird empfohlen, um die größten Consumer des Versionsspeichers zu suchen.
Hinweis
Um dies von Azure Synapse Analytics oder Analytics Platform System (PDW) aufzurufen, verwenden Sie den Namen sys.dm_pdw_nodes_tran_top_version_generators. Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.
Syntax
sys.dm_tran_top_version_generators
Zurückgegebene Tabelle
Spaltenname | Datentyp | Beschreibung |
---|---|---|
database_id | int | Datenbank-ID In Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines Pools für elastische Datenbanken eindeutig, aber nicht innerhalb eines logischen Servers. |
rowset_id | bigint | Rowset-ID. |
aggregated_record_length_in_bytes | int | Summe der Datensatzlängen für jedes database_id und rowset_id Paar im Versionsspeicher. |
pdw_node_id | int | Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW) Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet. |
Berechtigungen
Für SQL Server und SQL Managed Instance ist die VIEW SERVER STATE
-Berechtigung erforderlich.
Für die SQL-Datenbank-Ziele Basic, S0 und S1 sowie für Datenbanken in Pools für elastische Datenbanken ist das Konto des Serveradministrators oder des Microsoft Entra-Administratorkontos oder die Mitgliedschaft in der ##MS_ServerStateReader##
Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE
-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##
-Serverrolle erforderlich.
Berechtigungen für SQL Server 2022 und höher
Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.
Hinweise
Da sys.dm_tran_top_version_generators möglicherweise viele Seiten lesen müssen, während der gesamte Versionsspeicher durchsucht wird, kann die Ausführung sys.dm_tran_top_version_generators die Systemleistung beeinträchtigen.
Beispiele
Im folgenden Beispiel wird ein Testszenario verwendet, in dem vier gleichzeitige Transaktionen, die jeweils durch eine Transaktionssequenznummer (XSN) identifiziert werden, in einer Datenbank ausgeführt werden, für die die Optionen ALLOW_SNAPSHOT_ISOLATION und READ_COMMITTED_SNAPSHOT auf ON festgelegt sind. Die folgenden Transaktionen werden ausgeführt:
XSN-57 ist ein Updatevorgang auf der serialisierbaren Isolationsstufe.
XSN-58 entspricht XSN-57.
XSN-59 ist ein Select-Vorgang auf der Momentaufnahmeisolationsstufe.
XSN-60 entspricht XSN-59.
Die folgende Abfrage wird ausgeführt.
SELECT
database_id,
rowset_id,
aggregated_record_length_in_bytes
FROM sys.dm_tran_top_version_generators;
Hier sehen Sie das Ergebnis.
database_id rowset_id aggregated_record_length_in_bytes
----------- -------------------- ---------------------------------
9 72057594038321152 87
9 72057594038386688 33
Die Ausgabe zeigt, dass alle Versionen erstellt database_id``9
werden und dass die Versionen aus zwei Tabellen generiert werden.
Siehe auch
Dynamische Verwaltungssichten und Funktionen (Transact-SQL)
Dynamische Verwaltungssichten und -funktionen im Zusammenhang mit Transaktionen (Transact-SQL)