拡張イベントの概要Extended events overview

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server 拡張イベントのアーキテクチャは高い拡張性と柔軟な構成を備えており、これによってユーザーは、トラブルシューティングまたはパフォーマンスの問題の特定に必要な量の情報を過不足なく収集できます。Extended Events has a highly scalable and highly configurable architecture that allows users to collect as much or as little information as is necessary to troubleshoot or identify a performance problem.

拡張イベントの詳細については、「クイック スタート:SQL Server 拡張イベント」を参照してください。You can find more information about Extended Events at Quick Start: Extended events in SQL Server.

SQL ServerSQL Server 拡張イベントの利点Benefits of SQL ServerSQL Server Extended Events

拡張イベントは軽量なパフォーマンス監視システムであり、使用されるパフォーマンス リソースはごくわずかです。Extended Events is a light weight performance monitoring system that uses very few performance resources. 拡張イベントには、セッション データを容易かつ迅速に作成、変更、表示、および分析するためのグラフィカル ユーザー インターフェイスが 2 つ用意されています (新規セッション ウィザード[新しいセッション] )。Extended Events provides two graphical user interfaces (New Session Wizard and New Session) to create, modify, display, and analyze your session data.

拡張イベントの概念Extended Events Concepts

SQL ServerSQL Server 拡張イベントは、イベントやイベント コンシューマーなど、既存の概念を基にして、Event Tracing for Windows の概念や、新しい概念を導入したものです。Extended Events (Extended Events) builds on existing concepts, such as an event or an event consumer, uses concepts from Event Tracing for Windows, and introduces new concepts.

次の表は、拡張イベントにおける各種の概念を示しています。The following table describes the concepts in Extended Events.

トピックTopic [説明]Description
SQL Server 拡張イベント パッケージSQL Server Extended Events Packages 拡張イベント パッケージについて説明します。拡張イベント パッケージには、拡張イベント セッションを実行する際、データの取得と処理に使用されるオブジェクトが含まれます。Describes the Extended Events packages that contain objects that are used for obtaining and processing data when an Extended Events session is running.
SQL Server 拡張イベント ターゲットSQL Server Extended Events Targets イベント セッション中にデータを受け取ることができるイベント コンシューマーについて説明します。Describes the event consumers that can receive data during an event session.
SQL Server 拡張イベント エンジンSQL Server Extended Events Engine 拡張イベント セッションを実装および管理するエンジンについて説明します。Describes the engine that implements and manages an Extended Events session.
SQL Server 拡張イベント セッションSQL Server Extended Events Sessions 拡張イベント セッションについて説明します。Describes the Extended Events session.

拡張イベントのアーキテクチャExtended Events Architecture

拡張イベントは、サーバー システムの汎用的なイベント処理システムです。Extended Events (Extended Events) is a general event-handling system for server systems. 拡張イベント インフラストラクチャでは、 SQL ServerSQL Serverからのデータを相互に関連付けることができます。さらに、特定の条件下では、オペレーティング システムやデータベース アプリケーションからのデータを相互に関連付けることもできます。The Extended Events infrastructure supports the correlation of data from SQL ServerSQL Server, and under certain conditions, the correlation of data from the operating system and database applications. 後者の場合、イベント データをオペレーティング システムまたはアプリケーションのイベント データと相互に関連付けるためには、拡張イベント出力を Event Tracing for Windows (ETW) に送る必要があります。In the latter case, Extended Events output must be directed to Event Tracing for Windows (ETW) to correlate the event data with operating system or application event data.

すべてのアプリケーションには、アプリケーションの内部と外部の両方で有用な実行ポイントが存在します。All applications have execution points that are useful both inside and outside an application. アプリケーションの内部に目を向けると、非同期処理が、タスクの初回実行時に収集された情報を使ってエンキューされていることがあります。Inside the application, asynchronous processing may be enqueued using information that is collected during the initial execution of a task. 一方、アプリケーションの外部では、実行ポイントは、監視ユーティリティに対し、監視対象アプリケーションの動作やパフォーマンス特性に関する情報を提供します。Outside the application, execution points provide monitoring utilities with information about the behavioral and performance characteristics of the monitored application.

拡張イベントを使用すると、プロセスの外部でイベント データを利用できます。Extended Events supports using event data outside a process. このデータは通常、次のようなツールやユーザーによって使用されます。This data is typically used by:

  • トレース ツール (SQL トレース、システム モニターなど)。Tracing tools, such as SQL Trace and System Monitor.

  • ログ ツール (Windows イベント ログ、 SQL ServerSQL Server エラー ログなど)。Logging tools, such as the Windows event log or the SQL ServerSQL Server error log.

  • 製品を管理するユーザー、または製品上でアプリケーションを開発するユーザー。Users administering a product or developing applications on a product.

拡張イベントの設計には、次の大きな特徴があります。Extended Events has the following key design aspects:

  • 拡張イベント エンジンはイベントの種類に依存しません。The Extended Events engine is event agnostic. イベントの内容による制約を受けないため、あらゆるイベントをあらゆるターゲットにバインドできます。This enables the engine to bind any event to any target because the engine is not constrained by event content. 拡張イベント エンジンの詳細については、「 SQL Server 拡張イベント エンジン」を参照してください。For more information about the Extended Events engine, see SQL Server Extended Events Engine.

  • イベントは、イベント コンシューマー (拡張イベントの ターゲット ) とは分離されています。Events are separated from event consumers, which are called targets in Extended Events. つまり、任意のターゲットが任意のイベントを受け取ることができます。This means that any target can receive any event. さらに、ターゲット側では、発生したあらゆるイベントを自動的に処理できるため、追加のイベント コンテキストを提供したりログに記録したりすることが可能となります。In addition, any event that is raised can be automatically consumed by the target, which can log or provide additional event context. 詳細については、「 SQL Server 拡張イベント ターゲット」を参照してください。For more information, see SQL Server Extended Events Targets.

  • イベントは、イベントが発生した際に実行されるアクションとは異なります。Events are distinct from the action to take when an event occurs. したがって、すべてのイベントには任意のアクションを関連付けることができます。Therefore, any action can be associated with any event.

  • 述語を使用すると、イベント データのキャプチャ時に動的にフィルターが適用されます。Predicates can dynamically filter when event data should be captured. この機能が拡張イベント インフラストラクチャの柔軟性を高めています。This adds to the flexibility of the Extended Events infrastructure. 詳細については、「 SQL Server 拡張イベント パッケージ」を参照してください。For more information, see SQL Server Extended Events Packages.

拡張イベントはイベント データを同期的に生成します。また、そのデータは非同期的に処理できるため、柔軟なイベント処理が可能となります。Extended Events can synchronously generate event data (and asynchronously process that data) which provides a flexible solution for event handling. さらに、拡張イベントには、次の機能が用意されています。In addition, Extended Events provides the following features:

  • サーバー システムの枠を越えてイベントを処理する統一的なアプローチ。同時に、ユーザーは特定のイベントを切り分けて、トラブルシューティングに役立てることができます。A unified approach to handling events across the server system, while enabling users to isolate specific events for troubleshooting purposes.

  • 既存の ETW ツールのサポートと統合。Integration with, and support for existing ETW tools.

  • Transact-SQLTransact-SQLに基づく自由な構成が可能なイベント処理メカニズム。A fully configurable event handling mechanism that is based on Transact-SQLTransact-SQL.

  • アクティブ プロセスを最小限の負荷で動的に監視する機能。The ability to dynamically monitor active processes, while having minimal effect on those processes.

  • パフォーマンスへの体感的な影響を伴わずに動作する既定のシステム正常性セッション。A default system health session that runs without any noticeable performance effects. このセッションは、パフォーマンスの問題をトラブルシューティングするのに役立つシステム データを収集します。The session collects system data that you can use to help troubleshoot performance issues. 詳細については、「 system_health セッションの使用」を参照してください。For more information, see Use the system_health Session.

拡張イベントのタスクExtended Events Tasks

Management StudioManagement Studio または Transact-SQLTransact-SQL を使用して Transact-SQLTransact-SQL データ定義言語 (DDL) ステートメント、動的管理ビューおよび関数、カタログ ビューを実行することで、 SQL ServerSQL Server 環境の簡単、または複雑な SQL ServerSQL Server 拡張イベント トラブルシューティング ソリューションを作成することができます。Using Management StudioManagement Studio or Transact-SQLTransact-SQL to execute Transact-SQLTransact-SQL Data Definition Language (DDL) statements, dynamic management views and functions, or catalog views, you can create simple or complex SQL ServerSQL Server Extended Events troubleshooting solutions for your SQL ServerSQL Server environment.

タスクの説明Task Description トピックTopic
オブジェクト エクスプローラー を使用してイベント セッションを管理します。Use the Object Explorer to manage event sessions. オブジェクト エクスプローラーでのイベント セッションの管理Manage Event Sessions in the Object Explorer
拡張イベント セッションを作成する方法について説明します。Describes how to create an Extended Events session. 拡張イベント セッションの作成Create an Extended Events Session
ターゲット データを表示および更新する方法について説明します。Describes how to view and refresh target data. SQL Server での拡張イベントからのターゲット データの詳細表示Advanced Viewing of Target Data from Extended Events in SQL Server
SQL ServerSQL Server 拡張イベント セッションを作成および管理するために、拡張イベントのツールを使用する方法について説明します。Describes how to use Extended Events tools to create and manage your SQL ServerSQL Server Extended Events sessions. 拡張イベントのツールExtended Events Tools
拡張イベント セッションを変更する方法について説明します。Describes how to alter an Extended Events session. 拡張イベント セッションの変更Alter an Extended Events Session
イベントに関連付けられているフィールドの情報を取得する方法について説明します。Describes how to get information about the fields associated with the events. すべてのイベントのフィールドを取得するGet the Fields for All Events
登録パッケージで提供されているイベントを調べる方法について説明します。Describes how to find out what events are available in the registered packages. 登録パッケージのイベントの表示View the Events for Registered Packages
登録パッケージで提供されている拡張イベント ターゲットを確認する方法について説明します。Describes how to determine what Extended Events targets are available in the registered packages. 登録パッケージの拡張イベント ターゲットの表示View the Extended Events Targets for Registered Packages
SQL トレースのイベントとそれに関連した列について、拡張イベントにおける等価なイベントとアクションを確認する方法について説明します。Describes how to view the Extended Events events and actions that are equivalent to each SQL Trace event and its associated columns. SQL トレースのイベント クラスと等価な拡張イベントを確認するView the Extended Events Equivalents to SQL Trace Event Classes
CREATE EVENT SESSION または ALTER EVENT SESSION で ADD TARGET 引数を使用する際に設定できるパラメーターを確認する方法について説明します。Describes how to find the parameters you can set when you use the ADD TARGET argument in CREATE EVENT SESSION or ALTER EVENT SESSION. ADD TARGET 引数の構成可能パラメーターの取得Get the Configurable Parameters for the ADD TARGET Argument
既存の SQL トレース スクリプトを拡張イベント セッションに変換する方法について説明します。Describes how to convert an existing SQL Trace script to an Extended Events session. 既存の SQL トレース スクリプトから拡張イベント セッションへの変換Convert an Existing SQL Trace Script to an Extended Events Session
ロックを保持しているクエリ、クエリのプラン、およびロックが取得されたときの Transact-SQLTransact-SQL スタックを特定する方法について説明します。Describes how to determine which queries are holding the lock, the plan of the query, and the Transact-SQLTransact-SQL stack at the time the lock was taken. ロックを保持しているクエリの特定Determine Which Queries Are Holding Locks
データベース パフォーマンスを低下させているロックのソースを特定する方法について説明します。Describes how to identify the source of locks that are hindering database performance. ロックの大半を取得しているオブジェクトを見つけるFind the Objects That Have the Most Locks Taken on Them
拡張イベントを Event Tracing for Windows と共に使用してシステムの使用状況を監視する方法について説明します。Describes how to use Extended Events with Event Tracing for Windows to monitor system activity. 拡張イベントを使用したシステムの使用状況の監視Monitor System Activity Using Extended Events
拡張イベントに対するカタログ ビューと動的管理ビュー (DMV) の使用。Using the Catalog views and the Dynamic management views (DMVs) for extended events SQL Server の拡張イベントに対するシステム ビューからの SELECT と JOINSELECTs and JOINs From System Views for Extended Events in SQL Server

Azure SQL Database では、コード例が異なる可能性があります。Code examples can differ for Azure SQL Database

Some Transact-SQL code examples written for SQL Server on-premises need small changes to run on Azure SQL Database service in the cloud. One catagory of such code examples involves system views whose name prefixess differ slightly between the two database systems:

  • server_   -   prefix for on-premises
  • database_   -   prefix for Azure SQL DB service in the cloud

For illustration, the following table lists and compares two subsets of the system views. For brevity, the subsets are restricted to view names that also contains the string _event. The subsets have differing name prefixes because they come the two different database systems.

Name from on-premises 2017 Name from cloud service
server_event_notifications
server_event_session_actions
server_event_session_events
server_event_session_fields
server_event_session_targets
server_event_sessions
server_events
server_trigger_events
database_event_session_actions
database_event_session_events
database_event_session_fields
database_event_session_targets
database_event_sessions
   

The two lists in the preceding table are accurate as of June 2019. But the table contents here may become outdated, because its content will not be maintained here. For accurate lists, run the following T-SQL SELECT statement. Run the SELECT twice, once on each database system.

SELECT name
    FROM sys.all_objects
    WHERE
        (name LIKE 'database\_%' { ESCAPE '\' } OR
         name LIKE 'server\_%' { ESCAPE '\' })
        AND name LIKE '%\_event%' { ESCAPE '\' }
	    AND type = 'V'
    ORDER BY name;

参照See Also

[データ層アプリケーション] Data-tier Applications
SQL Server オブジェクトとバージョンの DAC サポート DAC Support For SQL Server Objects and Versions
データ層アプリケーションの配置 Deploy a Data-tier Application
データ層アプリケーションの監視 Monitor Data-tier Applications
拡張イベントの動的管理ビュー Extended Events Dynamic Management Views
拡張イベント カタログ ビュー (Transact-SQL)Extended Events Catalog Views (Transact-SQL)
XELite: XEL ファイルまたはライブ SQL ストリームから XEvents を読み取るためのクロスプラットフォーム ライブラリ、2019 年 5 月リリース。XELite: Cross-platform library to read XEvents from XEL files or live SQL streams, released May 2019.
Read-SQLXEvent PowerShell コマンドレット、2019 年 6 月リリース。Read-SQLXEvent PowerShell cmdlet, released June 2019.