sys.dm_exec_trigger_stats (Transact-SQL)

適用于: SQL Server Azure SQL資料庫Azure SQL 受控執行個體

傳回快取觸發程序的彙總效能統計資料。 此檢視會針對每個觸發程序包含一個資料列,而且資料列的存留期間與觸發程序維持快取狀態的時間一樣長。 從快取中移除觸發程序時,對應的資料列也會從這個檢視中刪除。 此時,就會引發效能統計資料 SQL 追蹤事件 (與 sys.dm_exec_query_stats 很相似)。

資料行名稱 資料類型 描述
database_id int 觸發程序所在的資料庫識別碼。
object_id int 觸發程序的物件識別碼。
type char(2) 物件的類型:

TA = 組件 (CLR) 觸發程序

TR = SQL 觸發程序
Type_desc nvarchar(60) 物件類型的描述:

CLR_TRIGGER

SQL_TRIGGER
sql_handle varbinary(64) 這可用來與此觸發程式內執行 之sys.dm_exec_query_stats 中的查詢相互關聯。
plan_handle varbinary(64) 記憶體中計畫的識別碼。 這個識別碼是暫時性的,只有當計畫留在快取時才會保留。 此值可與動態管理檢視 sys.dm_exec_cached_plans 搭配使用。
cached_time datetime 在快取中加入觸發程序的時間。
last_execution_time datetime 上次執行觸發程序的時間。
execution_count bigint 自上次編譯之後,觸發程式已執行的次數。
total_worker_time bigint 自編譯此觸發程式以來,執行此觸發程式所耗用的 CPU 時間總計,以毫秒為單位。
last_worker_time bigint 觸發程序上次執行所耗用的 CPU 時間 (以微秒為單位)。
min_worker_time bigint 此觸發程式在單一執行期間已耗用的最大 CPU 時間,以微秒為單位。
max_worker_time bigint 此觸發程式在單一執行期間已耗用的最大 CPU 時間,以微秒為單位。
total_physical_reads bigint 自編譯此觸發程式之後,執行所執行的實體讀取總數。
last_physical_reads bigint 上次執行觸發程式時執行的實體讀取數目。
min_physical_reads bigint 此觸發程式在單一執行期間曾執行的實體讀取數目下限。
max_physical_reads bigint 此觸發程式在單一執行期間曾執行的實體讀取數目上限。
total_logical_writes bigint 自編譯此觸發程式後執行所執行的邏輯寫入總數。
last_logical_writes bigint 上次執行觸發程式時執行的邏輯寫入數目。
min_logical_writes bigint 此觸發程式在單一執行期間已執行的邏輯寫入數目下限。
max_logical_writes bigint 此觸發程式在單一執行期間曾執行的邏輯寫入數目上限。
total_logical_reads bigint 自編譯此觸發程式後執行所執行的邏輯讀取總數。
last_logical_reads bigint 上次執行觸發程式時執行的邏輯讀取數目。
min_logical_reads bigint 此觸發程式在單一執行期間曾執行的邏輯讀取數目下限。
max_logical_reads bigint 此觸發程式在單一執行期間執行的最大邏輯讀取數目。
total_elapsed_time bigint 完成此觸發程式執行所耗用的總時間,以微秒為單位。
last_elapsed_time bigint 這個觸發程序最近完成執行經歷的時間 (以微秒為單位)。
min_elapsed_time bigint 針對此觸發程式的任何已完成執行,最少經過的時間,以微秒為單位。
max_elapsed_time bigint 此觸發程式的任何已完成執行所耗用的時間上限,以微秒為單位。
total_spills bigint 編譯此觸發程式之後,執行此觸發程式所溢出的頁面總數。

適用于:從 SQL Server 2017 (14.x) CU3 開始
last_spills bigint 上次執行觸發程式時溢出的頁面數目。

適用于:從 SQL Server 2017 (14.x) CU3 開始
min_spills bigint 此觸發程式在單一執行期間已溢出的最小頁數。

適用于:從 SQL Server 2017 (14.x) CU3 開始
max_spills bigint 此觸發程式在單一執行期間曾溢出的頁數上限。

適用于:從 SQL Server 2017 (14.x) CU3 開始
total_page_server_reads bigint 自編譯後,執行此觸發程式所執行的頁面伺服器讀取總數。

適用于:Azure SQL資料庫超大規模資料庫
last_page_server_reads bigint 上次執行觸發程式時執行的頁面伺服器讀取數目。

適用于:Azure SQL資料庫超大規模資料庫
min_page_server_reads bigint 此觸發程式在單一執行期間執行的頁面伺服器讀取數目下限。

適用于:Azure SQL資料庫超大規模資料庫
max_page_server_reads bigint 此觸發程式在單一執行期間執行的頁面伺服器讀取數目上限。

適用于:Azure SQL資料庫超大規模資料庫

備註

在SQL Database中,動態管理檢視無法公開會影響資料庫內含專案的資訊,或公開使用者可存取之其他資料庫的相關資訊。 為了避免公開這項資訊,會篩選出包含不屬於已連線租使用者之資料的每一個資料列。

完成查詢時,會更新檢視中的統計資料。

權限

在SQL Server和SQL 受管理執行個體上,需要 VIEW SERVER STATE 許可權。

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

SQL Server 2022 和更新版本的許可權

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

範例

下列範例會傳回平均經過時間所識別之前五項觸發程序的相關資訊。

SELECT TOP 5 d.object_id, d.database_id, DB_NAME(database_id) AS 'database_name',   
    OBJECT_NAME(object_id, database_id) AS 'trigger_name', d.cached_time,  
    d.last_execution_time, d.total_elapsed_time,   
    d.total_elapsed_time/d.execution_count AS [avg_elapsed_time],   
    d.last_elapsed_time, d.execution_count  
FROM sys.dm_exec_trigger_stats AS d  
ORDER BY [total_worker_time] DESC;  

另請參閱

執行相關的動態管理檢視和函數 (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_exec_query_stats (Transact-SQL)
sys.dm_exec_procedure_stats (Transact-SQL)
sys.dm_exec_cached_plans (Transact-SQL)