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)