Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
databáze SQL v Microsoft Fabric
V instanci SQL Serveru tento dynamický pohled správy vrací virtuální tabulku pro všechny aktivní transakce, které generují nebo potenciálně přistupují k verzím řádků. Transakce jsou zahrnuty za jedné nebo více z následujících podmínek:
Když jsou ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT databázové možnosti nastaveny na ZAPNUTO:
Existuje jeden řádek pro každou transakci, která běží pod úrovní izolace snapshotu, nebo na úrovni izolace s potvrzením čtení, která používá verzování řádků.
Pro každou transakci je jeden řádek, který způsobuje vytvoření verze řádku v aktuální databázi. Například transakce generuje verzi řádku aktualizací nebo smazáním řádku v aktuální databázi.
Když je spouštěč aktivován, existuje jeden řádek pro transakci, pod kterým se spoušť vykonává.
Když běží online indexační procedura, existuje jeden řádek pro transakci, která index vytváří.
Když je povolena relace Multiple Active Results Sets (MARS), existuje jeden řádek pro každou transakci, která přistupuje k verzemi řádku.
Tento dynamický pohled na správu nezahrnuje systémové transakce.
Poznámka:
Pro volání z Azure Synapse Analytics nebo Analytics Platform System (PDW) použijte název sys.dm_pdw_nodes_tran_active_snapshot_database_transactions. Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.
Syntaxe
sys.dm_tran_active_snapshot_database_transactions
Vrácená tabulka
| Název sloupce | Datový typ | Description |
|---|---|---|
| transaction_id | bigint | Jedinečné identifikační číslo přidělené pro transakci. ID transakce se primárně používá k identifikaci transakce při operacích uzamčení. |
| transaction_sequence_num | bigint | Pořadové číslo transakce. Jedná se o jedinečné pořadové číslo, které je přiřazeno transakci při jejím zahájení. Transakce, které negenerují záznamy o verzi a nepoužívají snapshot scany, neobdrží pořadové číslo transakce. |
| commit_sequence_num | bigint | Pořadové číslo, které ukazuje, kdy transakce skončí (commituje nebo zastaví). Pro aktivní transakce je hodnota NULL. |
| is_snapshot | int | 0 = Není to transakce izolace snímku. 1 = Je transakce izolace snímku. |
| session_id | int | ID relace, která transakci spustila. |
| first_snapshot_sequence_num | bigint | Nejnižší sekvenční číslo transakcí z transakcí, které byly aktivní v době pořízení snapshotu. Při provedení snapshot transakce pořídí snímek všech aktivních transakcí v daném okamžiku. Pro transakce bez snapshotů tento sloupec ukazuje 0. |
| max_version_chain_traversed | int | Maximální délka řetězce verzí, kterou procházíme, aby se našla transakční konzistentní verze. |
| average_version_chain_traversed | skutečné | Průměrný počet verzí řádků v řetězcích verzí, které jsou procházeny. |
| elapsed_time_seconds | bigint | Uplynula doba od získání pořadového čísla transakce. |
| pdw_node_id | int |
platí pro: Azure Synapse Analytics, Analytics Platform System (PDW) Identifikátor uzlu, na který je tato distribuce zapnutá. |
Povolení
Na SQL Serveru a službě SQL Managed Instance vyžaduje VIEW SERVER STATE oprávnění.
U cílů služby SQL Database Basic, S0 a S1 a pro databáze v elastických fondech se vyžaduje účet správce serveru , účet správce Microsoft Entra nebo členství v ##MS_ServerStateReader##roli serveru . U všech ostatních cílů VIEW DATABASE STATE služby SQL Database se vyžaduje buď oprávnění k databázi, nebo členství v ##MS_ServerStateReader## roli serveru.
Oprávnění pro SQL Server 2022 a novější
Vyžaduje oprávnění ZOBRAZIT STAV VÝKONU SERVERU na serveru.
Poznámky
sys.dm_tran_active_snapshot_database_transactions hlásí transakce, kterým je přiřazeno sekvenční číslo transakce (XSN). XSN je přiřazeno, když transakce poprvé přistupuje k úložišti verzí. V databázi, která je povolena pro izolaci snapshotů nebo pro uzavřenou izolaci čtení pomocí verzování řádků, příklady ukazují, kdy je XSN přiřazeno k transakci:
Pokud transakce běží na úrovni serializovatelné izolace, XSN je přiřazeno při prvním spuštění příkazu, například operace UPDATE, která způsobí vytvoření verze řádku.
Pokud transakce běží v izolaci snapshotu, je přiřazeno XSN při vykonání jakéhokoli příkazu jazyka pro manipulaci s daty (DML), včetně operace SELECT.
Čísla pořadí transakcí jsou sériově zvyšována pro každou transakci, která je zahájena v instanci databázového enginu.
Examples
Následující příklad používá testovací scénář, ve kterém v databázi běží čtyři souběžné transakce, každá označená sekvenčním číslem transakce (XSN), která má nastavené možnosti ALLOW_SNAPSHOT_ISOLATION a READ_COMMITTED_SNAPSHOT na ON. Probíhají následující transakce:
XSN-57 je aktualizační operace v rámci serializovatelné izolace.
XSN-58 je stejný jako XSN-57.
XSN-59 je vybraná operace s izolací snímku
XSN-60 je stejný jako XSN-59.
Následující dotaz je vykonán.
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;
Tady je soubor výsledků.
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
Následující informace hodnotí výsledky z sys.dm_tran_active_snapshot_database_transactions:
XSN-57: Protože tato transakce neprobíhá pod izolací snapshotu, hodnoty
is_snapshotafirst_snapshot_sequence_numjsou0.transaction_sequence_numukazuje, že této transakci bylo přiřazeno sekvenční číslo transakce, protože jedna nebo obě ALLOW_SNAPSHOT_ISOLATION nebo READ_COMMITTED_SNAPSHOT možnosti databáze jsou ZAPNUTÉ.XSN-58: Tato transakce neprobíhá pod izolací snapshot a platí stejné informace pro XSN-57.
XSN-59: Toto je první aktivní transakce, která běží pod izolací snímků. Tato transakce čte data, která byla potvrzena před XSN-57, jak je indikováno .
first_snapshot_sequence_numVýstup této transakce také ukazuje maximální řetězec verzí, který je pro řádek procházen, a1průměr1verzí pro každý přístupný řádek. To znamená, že transakce XSN-57, XSN-58 a XSN-60 nemodifikovaly řádky ani nebyly commitovány.XSN-60: Toto je druhá transakce běžící pod izolací snímků. Výstup ukazuje stejné informace jako XSN-59.
Viz také
NASTAVIT ÚROVEŇ IZOLACE TRANSAKCÍ (Transact-SQL)
zobrazení a funkce dynamické správy (Transact-SQL)
Zobrazení a funkce dynamické správy související s transakcemi (Transact-SQL)