sys.dm_tran_top_version_generators (Transact-SQL)
適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
Analytics Platform System (PDW)
針對在版本存放區中產生大部分版本的 對象,傳回虛擬數據表。 sys.dm_tran_top_version_generators會傳回依database_id和rowset_id分組的前 256 筆匯總記錄長度。 sys.dm_tran_top_version_generators藉由查詢dm_tran_version_store虛擬數據表來擷取數據。 sys.dm_tran_top_version_generators是執行效率不佳的檢視,因為此檢視會查詢版本存放區,而且版本存放區可能非常大。 我們建議您使用此函式來尋找版本存放區的最大取用者。
注意
若要從 Azure Synapse Analytics 或 Analytics Platform System (PDW) 呼叫此專案,請使用名稱 sys.dm_pdw_nodes_tran_top_version_generators。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。
語法
sys.dm_tran_top_version_generators
傳回的資料表
資料行名稱 | 資料類型 | 描述 |
---|---|---|
database_id | int | 資料庫識別碼。 在 Azure SQL 資料庫中,這些值在單一資料庫或彈性集區內是唯一的,但在邏輯伺服器內則不是唯一的。 |
rowset_id | bigint | 數據列集標識碼。 |
aggregated_record_length_in_bytes | int | 版本存放區中每個database_id和rowset_id組的記錄長度總和。 |
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 權限。
備註
因為 sys.dm_tran_top_version_generators 掃描整個版本存放區時,可能必須讀取許多頁面,所以執行 sys.dm_tran_top_version_generators 可能會干擾系統效能。
範例
下列範例會使用一個測試案例,其中四個並行交易,每個交易都是由交易序號 (XSN) 所識別,且資料庫中有設定為 ON 的ALLOW_SNAPSHOT_ISOLATION和READ_COMMITTED_SNAPSHOT選項。 下列交易正在執行:
XSN-57 是可串行化隔離下的更新作業。
XSN-58 與 XSN-57 相同。
XSN-59 是快照隔離下的選取作業。
XSN-60 與 XSN-59 相同。
執行下列查詢。
SELECT
database_id,
rowset_id,
aggregated_record_length_in_bytes
FROM sys.dm_tran_top_version_generators;
以下為結果集。
database_id rowset_id aggregated_record_length_in_bytes
----------- -------------------- ---------------------------------
9 72057594038321152 87
9 72057594038386688 33
輸出會顯示由 database_id``9
建立的所有版本,以及版本從兩個數據表產生。