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) 數目。 輸出會顯示兩個: 59
和 60
。 數據 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 語句之後存取數據。 交易序號會遞增一個。