Udostępnij za pomocą


sys.dm_tran_current_transaction (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w Microsoft Fabric

Zwraca pojedynczy wiersz, który wyświetla informacje o stanie transakcji w bieżącej sesji.

Uwaga / Notatka

Aby wywołać to z Azure Synapse Analytics lub Analytics Platform System (PDW), użyj nazwy sys.dm_pdw_nodes_tran_current_transaction. Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.

Składnia

  
sys.dm_tran_current_transaction  

Zwracana tabela

Nazwa kolumny Typ danych Description
transaction_id bigint Identyfikator transakcji aktualnego snapshota.
transaction_sequence_num bigint Numer sekwencyjny transakcji generującej wersję rekordu.
transaction_is_snapshot bit Stan izolacji migawki. Ta wartość wynosi 1, jeśli transakcja jest rozpoczęta w izolacji snapshotów. W przeciwnym razie wartość wynosi 0.
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.
last_transaction_sequence_num bigint Globalny numer sekwencyjny. Ta wartość reprezentuje ostatni numer sekwencyjny transakcji wygenerowany przez system.
first_useful_sequence_num bigint Globalny numer sekwencyjny. Ta wartość reprezentuje najstarszy numer sekwencyjny transakcji transakcji, której wersje wierszy muszą być przechowywane w magazynie wersji. Wersje wierszy utworzone w wyniku wcześniejszych transakcji mogą zostać usunięte.
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.

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 migawkowej.

  • XSN-60 jest tym samym co XSN-59.

Następujące zapytanie jest wykonywane w ramach każdej transakcji.

SELECT   
    transaction_id  
   ,transaction_sequence_num  
   ,transaction_is_snapshot  
   ,first_snapshot_sequence_num  
   ,last_transaction_sequence_num  
   ,first_useful_sequence_num  
  FROM sys.dm_tran_current_transaction;  

Oto wynik dla XSN-59.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9387                 59                       1                         
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
57                               61                        
  
first_useful_sequence_num  
-------------------------  
57  

Wynik pokazuje, że XSN-59 to transakcja migawkowa, która używa XSN-57 jako pierwszej transakcji aktywnej na początku XSN-59. Oznacza to, że XSN-59 odczytuje dane dokonane przez transakcje o numerze sekwencji niższej niż XSN-57.

Oto wynik dla XSN-57.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9295                 57                       0  
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
NULL                        61  
  
first_useful_sequence_num  
-------------------------  
57  

Ponieważ XSN-57 nie jest transakcją migawkową, first_snapshot_sequence_num jest .NULL

Zobacz też

Dynamiczne widoki zarządzania i funkcje (Transact-SQL)
Dynamiczne widoki zarządzania i funkcje związane z transakcjami (Transact-SQL)