Megosztás a következőn keresztül:


sys.dm_tran_active_snapshot_database_transactions (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Egy SQL Server példányban ez a dinamikus menedzsment nézet virtuális táblát ad vissza minden olyan aktív tranzakcióhoz, amely sorverziókat generál vagy potenciálisan hozzáfér. A tranzakciók az alábbi feltételek egyikére vagy többére vonatkoznak:

  • Amikor az adatbázis egyik vagy mindkettő ALLOW_SNAPSHOT_ISOLATION és READ_COMMITTED_SNAPSHOT adatbázis opciók ON-ra vannak állítva:

    • Minden tranzakcióhoz egy sor van, amely snapshot izolációs szinten, vagy olvasási elkülönítési szint alatt fut, és sorverziót használ.

    • Minden tranzakcióhoz egy sor van, amely miatt a jelenlegi adatbázisban sorverzió jön létre. Például a tranzakció egy sorverziót generál azáltal, hogy frissíti vagy törli a sort a jelenlegi adatbázisban.

  • Amikor egy trigger aktiválódik, van egy sor a tranzakcióhoz, amelyben a trigger végrehajtódik.

  • Amikor egy online indexelési eljárás fut, van egy sor annak a tranzakciónak, amely létrehozza az indexet.

  • Amikor a Több Aktív Eredménykészlet (MARS) ülés engedélyezve van, minden tranzakcióhoz egy sor áll, amely a sorverziókhoz hozzáfér.

Ez a dinamikus menedzsment nézet nem tartalmazza a rendszertranzakciókat.

Megjegyzés:

Az Azure Synapse Analytics vagy Analytics Platform System (PDW) néven használjuk a sys.dm_pdw_nodes_tran_active_snapshot_database_transactions nevet. Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.

Szemantika

  
sys.dm_tran_active_snapshot_database_transactions  

Visszaadott tábla

Oszlop név Adattípus Description
transaction_id bigint Egyedi azonosító szám a tranzakcióhoz. A tranzakcióazonosítót elsősorban a tranzakció azonosítására használják a zárolási műveletekben.
transaction_sequence_num bigint Tranzakció sorszám. Ez egy egyedi sorozatszám, amelyet egy tranzakció indításkor rendelnek hozzá. Azok a tranzakciók, amelyek nem generálnak verziórekordokat és nem használnak snapshot szkennelést, nem kapnak tranzakciós sorozatszámot.
commit_sequence_num bigint Sorszám, amely jelzi, mikor fejezi be a tranzakció (commit vagy megáll). Aktív tranzakciók esetén az érték NULL.
is_snapshot int 0 = Nem egy pillanatkép izolációs tranzakció.

1 = egy pillanatkép izolációs tranzakció.
session_id int A tranzakció elindító ülésének azonosítója.
first_snapshot_sequence_num bigint A legalacsonyabb tranzakciósorozat száma, amelyek aktív voltak a pillanatkép készítésekor történtek. Végrehajtáskor egy snapshot tranzakció az adott időben az összes aktív tranzakció pillanatképét veszi. Nem snapshot tranzakciók esetén ez az oszlop 0-t mutat.
max_version_chain_traversed int A verziólánc maximális hossza, amelyet áthaladunk a tranzakciósan konzisztens verzió megtalálásához.
average_version_chain_traversed valódi Átlagosan száma a verzióláncokban átívelt sorverzióknak.
elapsed_time_seconds bigint Eltelt idő, mióta a tranzakció megkapta a tranzakció sorszámát.
pdw_node_id int A következővonatkozik: Azure Synapse Analytics, Analytics Platform System (PDW)

Annak a csomópontnak az azonosítója, amelyen ez a disztribúció található.

Permissions

Az SQL Serveren és a felügyelt SQL-példányon VIEW SERVER STATE engedély szükséges.

Az SQL Database Alapszintű, S0és S1 szolgáltatás célkitűzésein, valamint rugalmas készletekbenlévő adatbázisok esetében a kiszolgálói rendszergazdai fiókra, a Microsoft Entra rendszergazdai fiókra vagy a ##MS_ServerStateReader##kiszolgálói szerepkör tagságára van szükség. Az SQL Database szolgáltatás minden más célkitűzéséhez vagy az adatbázis VIEW DATABASE STATE engedélyére, vagy a ##MS_ServerStateReader## kiszolgálói szerepkör tagságára van szükség.

Engedélyek az SQL Server 2022-hez és újabb verziókhoz

A KISZOLGÁLÓ TELJESÍTMÉNYÁLLAPOTÁNAK MEGTEKINTÉSE engedélyre van szükség a kiszolgálón.

Megjegyzések

sys.dm_tran_active_snapshot_database_transactions olyan tranzakciókat jelent, amelyekhez tranzakciósorozat szám (XSN) tartozik. Az XSN-t akkor rendelik hozzá, amikor a tranzakció először eléri a verzió tárolót. Egy olyan adatbázisban, amely sorverziózással engedélyezett snapshot izolációra vagy olvasási elszigetelésre, a példák azt mutatják, amikor egy XSN rendelnek hozzá egy tranzakcióhoz:

  • Ha egy tranzakció sorozatosítható izolációs szinten fut, akkor XSN-t rendelnek hozzá, amikor a tranzakció először hajt végre egy utasítást, például egy UPDATE műveletet, amely sorverzió létrehozását eredményezi.

  • Ha egy tranzakció snapshot izolációban fut, akkor XSN kerül hozzá, amikor bármilyen adatkezelő nyelv (DML) utasítás, beleértve egy SELECT műveletet is végrehajtunk.

A tranzakciósorozat számai sorozatban növelik minden egyes tranzakció esetén, amelyet az adatbázis motorjának egy példányában indítanak el.

Példák

A következő példa egy teszthelyzetet használ, amelyben négy egyidejű tranzakció, mindegyiket egy tranzakciósorozat számmal (XSN) azonosítva, egy olyan adatbázisban fut, amelynek ALLOW_SNAPSHOT_ISOLATION és READ_COMMITTED_SNAPSHOT opciói ON-ra vannak állítva. A következő tranzakciók zajlanak:

  • Az XSN-57 egy frissítő művelet, amely sorozatos izolációval rendelkezik.

  • Az XSN-58 ugyanaz, mint az XSN-57.

  • Az XSN-59 egy kiválasztott művelet snapshot izoláció alatt

  • Az XSN-60 ugyanaz, mint az XSN-59.

A következő lekérdezést hajtják végre.

SELECT   
    transaction_id,  
    transaction_sequence_num,  
    commit_sequence_num,  
    is_snapshot session_id,  
    first_snapshot_sequence_num,  
    max_version_chain_traversed,  
    average_version_chain_traversed,  
    elapsed_time_seconds  
  FROM sys.dm_tran_active_snapshot_database_transactions;  

Itt van az eredmények összessége.

transaction_id  transaction_sequence_num  commit_sequence_num  
--------------  ------------------------  -------------------  
9295            57                        NULL  
9324            58                        NULL  
9387            59                        NULL  
9400            60                        NULL  
  
is_snapshot  session_id   first_snapshot_sequence_num  
-----------  -----------  ---------------------------  
0            54           0  
0            53           0  
1            52           57  
1            51           57  
  
max_version_chain_traversed  average_version_chain_traversed  
---------------------------  -------------------------------  
0                            0  
0                            0  
1                            1  
1                            1  
  
elapsed_time_seconds  
--------------------  
419  
397  
359  
333  

Az alábbi információk értékelik az sys.dm_tran_active_snapshot_database_transactions eredményeit:

  • XSN-57: Mivel ez a tranzakció nem fut snapshot izoláció alatt, az is_snapshot érték és first_snapshot_sequence_num .0 transaction_sequence_num azt mutatja, hogy tranzakció sorozatszámot rendeltek ehhez a tranzakcióhoz, mivel az egyik vagy mindkét ALLOW_SNAPSHOT_ISOLATION vagy READ_COMMITTED_SNAPSHOT adatbázis opció BEKAPCSOLT.

  • XSN-58: Ez a tranzakció nem fut snapshot izoláció alatt, és ugyanaz az információ érvényes az XSN-57-re is.

  • XSN-59: Ez az első aktív tranzakció, amely snapshot izoláció alatt fut. Ez a tranzakció olyan adatokat olvas, amelyeket az XSN-57 előtt végeztek el, ahogy azt az jelzi.first_snapshot_sequence_num A tranzakció kimenete azt is mutatja, hogy a maximális verziólánc, amelyet egy sorban áthaladnak, és 1 áthaladt minden elérhető sorhoz tartozó verzió átlagaként 1 . Ez azt jelenti, hogy az XSN-57, XSN-58 és XSN-60 tranzakciók nem módosították a sorokat és nem kötelezték el magukat.

  • XSN-60: Ez a második tranzakció, amely snapshot izoláció alatt fut. A kimenet ugyanazt az információt mutatja, mint az XSN-59.

Lásd még:

TRANZAKCIÓELKÜLÖNÍTÉSI SZINT (Transact-SQL) beállítása
dinamikus felügyeleti nézetek és függvények (Transact-SQL)
Tranzakcióval kapcsolatos dinamikus felügyeleti nézetek és függvények (Transact-SQL)