分享方式:


sys.dm_tran_transactions_snapshot (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體

針對每個快照集交易啟動時作用中之交易sequence_number傳回虛擬數據表。 此檢視所傳回的信息可協助您執行下列動作:

  • 尋找目前使用中快照集交易的數目。

  • 識別特定快照集交易所忽略的數據修改。 對於快照集交易啟動時作用中的交易,即使該交易認可之後,該交易的所有數據修改也會被快照集交易忽略。

例如,請考慮下列來自 sys.dm_tran_transactions_snapshot的輸出:

transaction_sequence_num snapshot_id snapshot_sequence_num  
------------------------ ----------- ---------------------  
59                       0           57  
59                       0           58  
60                       0           57  
60                       0           58  
60                       0           59  
60                       3           57  
60                       3           58  
60                       3           59  
60                       3           60  

數據 transaction_sequence_num 行會識別目前快照集交易的交易順序 (XSN) 數目。 輸出會顯示兩個: 5960。 數據 snapshot_sequence_num 行會識別每個快照集交易啟動時使用中交易的交易序號。

輸出顯示快照集交易 XSN-59 會在執行兩個作用中交易 XSN-57 和 XSN-58 時啟動。 如果 XSN-57 或 XSN-58 進行數據修改,XSN-59 會忽略變更,並使用數據列版本設定來維護資料庫的交易一致檢視。

快照集交易 XSN-60 會忽略 XSN-57 和 XSN-58 以及 XSN 59 所做的數據修改。

傳回的資料表

資料行名稱 資料類型 描述
transaction_sequence_num bigint 快照集交易的交易序號 (XSN)。
snapshot_id int 每個 Transact-SQL 語句的快照集標識碼,都是使用數據列版本設定在讀取認可下啟動。 這個值可用來產生資料庫的交易一致檢視,支援使用數據列版本設定在讀取認可下執行的每個查詢。
snapshot_sequence_num bigint 啟動快照集交易時作用中之交易的交易序號。

權限

在 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 權限。

備註

當快照集交易啟動時,資料庫引擎 會記錄當時使用中的所有交易。 sys.dm_tran_transactions_snapshot會針對所有目前作用中的快照集交易報告這項資訊。

每個交易都是由交易開始時指派的交易序號來識別。 交易會在 BEGIN TRANSACTION 或 BEGIN WORK 語句執行時開始。 不過,資料庫引擎 會指派交易序號,並執行第一個 Transact-SQL 語句,以在 BEGIN TRANSACTION 或 BEGIN WORK 語句之後存取數據。 交易序號會遞增一個。

另請參閱

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