Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w Microsoft Fabric
W instancji SQL Server ten dynamiczny widok zarządzania zwraca wirtualną tabelę dla wszystkich aktywnych transakcji, które generują lub potencjalnie mają dostęp do wersji wierszy. Transakcje są uwzględniane pod jednym lub więcej z następujących warunków:
Gdy oba ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT opcje bazy danych są ustawione na ON:
Istnieje jeden wiersz dla każdej transakcji działającej na poziomie izolacji snapshotów lub poziomie read-commitowanego izolowania wykorzystującym wersowanie wiersza.
Dla każdej transakcji jest jeden wiersz, który powoduje utworzenie wersji wiersza w bieżącej bazie danych. Na przykład transakcja generuje wersję wiersza poprzez aktualizację lub usunięcie wiersza w bieżącej bazie danych.
Gdy wyzwalacz jest uruchamiany, istnieje jeden wiersz transakcji, w ramach którego wyzwalacz jest wykonywany.
Gdy procedura indeksowania online jest uruchomiona, istnieje jeden wiersz dla transakcji, która tworzy indeks.
Gdy sesja Multiple Active Results Sets (MARS) jest włączona, dla każdej transakcji uzyskującej dostęp do wersji wiersza jest jeden wiersz.
Ten dynamiczny widok zarządzania nie obejmuje transakcji systemowych.
Uwaga / Notatka
Aby wywołać to z Azure Synapse Analytics lub Analytics Platform System (PDW), użyj nazwy sys.dm_pdw_nodes_tran_active_snapshot_database_transactions. Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.
Składnia
sys.dm_tran_active_snapshot_database_transactions
Zwracana tabela
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
| transaction_id | bigint | Unikalny numer identyfikacyjny przypisany do transakcji. ID transakcji służy głównie do identyfikacji transakcji podczas operacji blokowania. |
| transaction_sequence_num | bigint | Numer sekwencyjny transakcji. Jest to unikalny numer sekwencyjny, który jest przypisywany transakcji na jej początku. Transakcje, które nie generują rekordów wersji i nie używają skanów migawkowych, nie otrzymają numeru sekwencyjnego transakcji. |
| commit_sequence_num | bigint | Numer sekwencyjny wskazujący, kiedy transakcja się kończy (zatwierdza lub zatrzymuje się). Dla aktywnych transakcji wartość wynosi NULL. |
| is_snapshot | int | 0 = Nie jest transakcją izolacji migawki. 1 = Jest transakcją izolacji migawki. |
| session_id | int | Identyfikator sesji, która rozpoczęła transakcję. |
| first_snapshot_sequence_num | bigint | Najniższy numer sekwencyjny transakcji z aktywnych transakcji w momencie wykonania snapshotu. Podczas wykonania transakcja migawkowa wykonuje migawkę wszystkich aktywnych transakcji w danym momencie. Dla transakcji niesnapshotowych ta kolumna pokazuje 0. |
| max_version_chain_traversed | int | Maksymalna długość łańcucha wersji, którą przechodzimy, aby znaleźć transakcyjnie spójną wersję. |
| average_version_chain_traversed | prawdziwy | Średnia liczba wersów wierszy w łańcuchach wersji, które są przechodzine. |
| elapsed_time_seconds | bigint | Czas od momentu uzyskania numeru sekwencyjnego transakcji. |
| pdw_node_id | int |
Dotyczy do: Azure Synapse Analytics, Analytics Platform System (PDW) Identyfikator węzła, w ramach którego znajduje się ta dystrybucja. |
Permissions
W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.
W przypadku celów usługi SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.
Uprawnienia dla programu SQL Server 2022 i nowszych
Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.
Uwagi
sys.dm_tran_active_snapshot_database_transactions raportuje transakcje, którym przypisany jest numer sekwencyjny transakcji (XSN). XSN jest przypisywany w momencie, gdy transakcja po raz pierwszy wchodzi do magazynu wersji. W bazie danych włączonej do izolacji migawek lub zadeklarowanej izolacji odczytu z wykorzystaniem wersjonowania wiersza, przykłady pokazują, kiedy do transakcji przypisany jest XSN:
Jeśli transakcja jest wykonywana na poziomie izolacji serializowalnej, XSN jest przypisywany w momencie, gdy transakcja po raz pierwszy wykona polecenie, takie jak operacja UPDATE, które powoduje utworzenie wersji wiersza.
Jeśli transakcja jest wykonywana w izolacji snapshot, XSN jest przypisywany przy wykonywaniu dowolnego polecenia języka manipulacji danymi (DML), w tym operacji SELECT.
Numery sekwencji transakcji są stopniowo zwiększane dla każdej transakcji rozpoczętej w instancji silnika bazy danych.
Przykłady
Poniższy przykład wykorzystuje scenariusz testowy, w którym cztery równoległe transakcje, każda oznaczona numerem sekwencji transakcji (XSN), są uruchamiane w bazie danych, w której opcje ALLOW_SNAPSHOT_ISOLATION i READ_COMMITTED_SNAPSHOT są ustawione na ON. Następujące transakcje są w trakcie:
XSN-57 to operacja aktualizacji w izolacji serializowanej.
XSN-58 jest tym samym co XSN-57.
XSN-59 to operacja selekcyjna w izolacji migawkowych
XSN-60 jest taki sam jak XSN-59.
Wykonywane jest następujące zapytanie.
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;
Oto zestaw wyników.
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
Poniższe informacje oceniają wyniki sys.dm_tran_active_snapshot_database_transactions:
XSN-57: Ponieważ ta transakcja nie jest prowadzona w izolacji snapshotów,
is_snapshotwartości ifirst_snapshot_sequence_numsą .0transaction_sequence_numpokazuje, że do tej transakcji przypisano numer sekwencyjny transakcji, ponieważ jedna lub obie opcje ALLOW_SNAPSHOT_ISOLATION lub READ_COMMITTED_SNAPSHOT bazy danych są WŁĄCZONE.XSN-58: Ta transakcja nie jest prowadzona w izolacji snapshot i te same informacje dotyczą XSN-57.
XSN-59: To pierwsza aktywna transakcja działająca w izolacji snapshotów. Ta transakcja odczytuje dane zatwierdzone przed XSN-57, co wskazuje .
first_snapshot_sequence_numWynik tej transakcji pokazuje również maksymalną liczbę przejścia łańcucha wersji dla wiersza i1przeszedł średnią1wersji dla każdego wiersza, do którego się uchodzi. Oznacza to, że transakcje XSN-57, XSN-58 i XSN-60 nie zmodyfikowały wierszy ani nie zostały zatwierdzone.XSN-60: To druga transakcja przeprowadzana w izolacji snapshotów. Wyjście pokazuje te same informacje co XSN-59.
Zobacz też
USTAWIĆ POZIOM IZOLACJI TRANSAKCJI (Transact-SQL)
Dynamiczne widoki zarządzania i funkcje (Transact-SQL)
Dynamiczne widoki zarządzania i funkcje związane z transakcjami (Transact-SQL)