分享方式:


sys.dm_tran_current_transaction (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

傳回單一數據列,顯示目前會話中交易的狀態資訊。

注意

若要從 Azure Synapse Analytics 或 Analytics Platform System (PDW) 呼叫此專案,請使用名稱 sys.dm_pdw_nodes_tran_current_transaction。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

語法

  
sys.dm_tran_current_transaction  

傳回的資料表

資料行名稱 資料類型 描述
transaction_id bigint 目前快照集的交易標識碼。
transaction_sequence_num bigint 產生記錄版本的交易序號。
transaction_is_snapshot bit 快照集隔離狀態。 如果交易是在快照隔離下啟動,則此值為 1。 否則,值為 0。
first_snapshot_sequence_num bigint 擷取快照集時作用中之交易的最低交易序號。 在執行時,快照集交易會擷取當時所有使用中交易的快照集。 對於非napshot 交易,此數據行會顯示0。
last_transaction_sequence_num bigint 全域序號。 這個值代表系統所產生的最後一個交易序號。
first_useful_sequence_num bigint 全域序號。 這個值代表交易的最舊交易序號,該交易具有必須保留在版本存放區中的數據列版本。 您可以移除先前交易所建立的數據列版本。
pdw_node_id int 適用於:Azure Synapse Analytics、Analytics Platform System (PDW)

此散發節點的標識碼。

權限

在 SQL Server 和 SQL 受控執行個體上,需要 VIEW SERVER STATE 權限。

在 SQL 資料庫 基本、S0 和 S1 服務目標上,以及彈性集區中的資料庫,需要伺服器管理員帳戶、Microsoft Entra 系統管理員帳戶,或伺服器角色的成員##MS_ServerStateReader##資格。 在所有其他 SQL Database 服務目標上,需要資料庫的 VIEW DATABASE STATE 權限或 ##MS_ServerStateReader## 伺服器角色的成員資格。

SQL Server 2022 及更新版本的權限

需要伺服器上的 VIEW SERVER PERFORMANCE STATE 權限。

範例

下列範例會使用一個測試案例,其中四個並行交易,每個交易都是由交易序號 (XSN) 所識別,且資料庫中有設定為 ON 的ALLOW_SNAPSHOT_ISOLATION和READ_COMMITTED_SNAPSHOT選項。 下列交易正在執行:

  • XSN-57 是可串行化隔離下的更新作業。

  • XSN-58 與 XSN-57 相同。

  • XSN-59 是快照隔離下的選取作業。

  • XSN-60 與 XSN-59 相同。

下列查詢會在每個交易的範圍內執行。

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;  

以下是 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  

輸出顯示 XSN-59 是使用 XSN-57 做為 XSN-59 啟動時使用中的第一筆交易的快照集交易。 這表示 XSN-59 會讀取交易序號低於 XSN-57 的交易所認可的數據。

以下是 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  

因為 XSN-57 不是快照集交易, first_snapshot_sequence_num 因此 是 NULL

另請參閱

動態管理檢視和函數 (Transact-SQL)
交易相關的動態管理檢視和函數 (Transact-SQL)