sys.dm_exec_trigger_stats (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
キャッシュされたトリガーの集計パフォーマンス統計を返します。 ビューにはトリガーごとに 1 つの行が含まれており、その行の有効期間は、トリガーがキャッシュされたままになります。 トリガーがキャッシュから削除されると、対応する行がこのビューから削除されます。 その時点で、パフォーマンス統計 SQL トレース イベントは、sys.dm_exec_query_statsと同様に発生します。
列名 | データ型 | 説明 |
---|---|---|
database_id | int | トリガーが存在するデータベース ID。 Azure SQL Database では、値は 1 つのデータベースまたは Elastic Pool 内で一意ですが、論理サーバー内では一意ではありません。 |
object_id | int | トリガーのオブジェクト ID 番号。 |
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 | このトリガーが 1 回の実行中に消費した最大 CPU 時間 (マイクロ秒単位)。 |
max_worker_time | bigint | このトリガーが 1 回の実行中に消費した最大 CPU 時間 (マイクロ秒単位)。 |
total_physical_reads | bigint | コンパイル後にこのトリガーの実行によって実行された物理読み取りの合計数。 |
last_physical_reads | bigint | トリガーが最後に実行された時点で実行された物理読み取りの数。 |
min_physical_reads | bigint | このトリガーが 1 回の実行中に実行した物理読み取りの最小数。 |
max_physical_reads | bigint | このトリガーが 1 回の実行中に実行した物理読み取りの最大数。 |
total_logical_writes | bigint | コンパイル後にこのトリガーの実行によって実行された論理書き込みの合計数。 |
last_logical_writes | bigint | トリガーが最後に実行された時点で実行された論理書き込みの数。 |
min_logical_writes | bigint | このトリガーが 1 回の実行中に実行した論理書き込みの最小数。 |
max_logical_writes | bigint | このトリガーが 1 回の実行中に実行した論理書き込みの最大数。 |
total_logical_reads | bigint | コンパイル後にこのトリガーの実行によって実行された論理読み取りの合計数。 |
last_logical_reads | bigint | トリガーが最後に実行された時点で実行された論理読み取りの数。 |
min_logical_reads | bigint | このトリガーが 1 回の実行中に実行した論理読み取りの最小数。 |
max_logical_reads | bigint | このトリガーが 1 回の実行中に実行した論理読み取りの最大数。 |
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 | このトリガーが 1 回の実行中にスピルしたページの最小数。 適用対象: SQL Server 2017 (14.x) CU3 以降 |
max_spills | bigint | このトリガーが 1 回の実行中にスピルしたページの最大数。 適用対象: SQL Server 2017 (14.x) CU3 以降 |
total_page_server_reads | bigint | コンパイル後にこのトリガーの実行によって実行されたページ サーバーの読み取りの合計数。 適用対象: Azure SQL Database Hyperscale |
last_page_server_reads | bigint | トリガーが最後に実行された時点で実行されたページ サーバーの読み取りの数。 適用対象: Azure SQL Database Hyperscale |
min_page_server_reads | bigint | このトリガーが 1 回の実行中に実行したページ サーバー読み取りの最小数。 適用対象: Azure SQL Database Hyperscale |
max_page_server_reads | bigint | このトリガーが 1 回の実行中に実行したページ サーバー読み取りの最大数。 適用対象: Azure SQL Database Hyperscale |
解説
SQL Database では、動的管理ビューでは、データベースの包含に影響する情報を公開したり、ユーザーがアクセスできる他のデータベースに関する情報を公開したりすることはできません。 この情報が公開されないようにするために、接続されているテナントに属していないデータを含む行はすべてフィルタリングされます。
ビュー内の統計は、クエリが完了したときに更新されます。
アクセス許可
SQL Server と SQL Managed Instance では、VIEW SERVER STATE
アクセス許可が必要です。
SQL Database の Basic、S0、S1 サービス対象、および Elastic Pool のデータベースの場合、サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または ##MS_ServerStateReader##
サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE
アクセス許可または ##MS_ServerStateReader##
サーバー ロールのメンバーシップのいずれかが必要です。
SQL Server 2022 以降でのアクセス許可
サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。
例
次の例では、平均経過時間で識別される上位 5 つのトリガーに関する情報を返します。
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)