SQL Server 拡張イベント セッションSQL Server Extended Events Sessions

SQL ServerSQL Server 拡張イベント セッションは、拡張イベント エンジンをホストしている SQL ServerSQL Server プロセス内で作成されます。A SQL ServerSQL Server Extended Events session is created in the SQL ServerSQL Server process hosting the Extended Events engine. 拡張イベント インフラストラクチャとその全体的な処理を理解するには、拡張イベント セッションの次の側面に注目します。The following aspects of an Extended Events session provide a context for understanding the Extended Events infrastructure and the general processing that takes place:

  • セッション状態。Session states. CREATE EVENT SESSION ステートメントおよび ALTER EVENT SESSION ステートメントを実行したときの拡張イベント セッションの各種の状態を表します。The different states that an Extended Events session is in when CREATE EVENT SESSION and ALTER EVENT SESSION statements are executed.

  • セッションの内容と特性。Session content and characteristics. 拡張イベント セッションの内容 (ターゲット、イベントなど) と、これらのオブジェクトがセッション内またはセッション間でどのように関係しているかを表します。The content of an Extended Events session, such as targets and events, and how these objects are related in a session or between sessions.

セッション状態Session States

拡張イベント セッションの各種の状態を次の図に示します。The following illustration shows the various states of an Extended Events session.

拡張イベント セッションの状態Extended event session state

前の図を見ると、イベント セッションに対して異なる DDL コマンドが発行されたときに、セッション状態が変化していることがわかります。Referring to the preceding figure, note that session state changes as the different DDL commands are issued for an event session. このような状態の変化について次の表で説明します。The following table describes these changes in state.

図ラベルIllustration label DDL ステートメントDDL statement 説明Description
作成Create CREATE EVENT SESSIONCREATE EVENT SESSION CREATE EVENT SESSION によって提供されたメタデータを含むセッション オブジェクトがホスト プロセスによって作成されます。The host process creates a session object that contains the metadata provided by CREATE EVENT SESSION. ホスト プロセスは、セッション定義を検証し、ユーザーの権限レベルを検証した後、メタデータを master データベースに格納します。The host process validates the session definition, validates the user permission level, and stores the metadata in the master database. このときセッションはまだアクティブではありません。At this point the session is not active.
AlterAlter ALTER EVENT SESSION, STATE=STARTALTER EVENT SESSION, STATE=START ホスト プロセスによってセッションが開始されます。The host process starts the session. ホスト プロセスは、格納されているメタデータを読み取って、セッション定義を検証し、ユーザーの権限レベルを検証して、セッションを作成します。The host process reads the stored metadata, validates the session definition, verifies the level of user permission level, and creates the session. イベントやターゲットなどのセッション オブジェクトが読み込まれ、イベント処理がアクティブになります。Session objects, such as events and targets, are loaded and event handling is active.
AlterAlter ALTER EVENT SESSION, STATE=STOPALTER EVENT SESSION, STATE=STOP ホスト プロセスによってアクティブなセッションが停止されます。ただし、メタデータは保持されます。The host process stops the active session but retains the metadata.
DropDrop DROP EVENT SESSIONDROP EVENT SESSION Drop (DROP SESSION) では、セッションがアクティブかどうかに応じて、セッションのメタデータを削除するか、メタデータを削除した上でアクティブなセッションを終了します。Depending on whether or not the session is active, Drop (DROP SESSION) will delete the metadata and close the active session, or delete the session metadata.


ALTER EVENT SESSION と DROP EVENT SESSION は、メタデータに適用される場合と、アクティブ セッションとメタデータに適用される場合とがあります。Both ALTER EVENT SESSION and DROP EVENT SESSION can be applied to the metadata or to an active session and the metadata.

セッションの内容と特性Session Content and Characteristics

拡張イベント セッションには暗黙的な境界があり、あるセッションの構成によって、別のセッションの構成が変更されることはありません。Extended Event sessions have implied boundaries in that the configuration of one session does not change the configuration of another session. ただし、イベントまたはターゲットを複数のセッションで使用することは可能です。However, these boundaries do not prevent an event or target from being used in more than one session.

次の図は、セッションの内容、およびパッケージとセッションの関係を示しています。The following illustration shows session content and the relationship between packages and sessions.

セッションでのオブジェクトの共存と共有。Object co-existance and sharing in sessions.

次の点に注目してください。Referring to the preceding illustration, note that:

  • パッケージ オブジェクトとセッション間のマッピングが多対多である。これは、1 つのオブジェクトが複数のセッションに存在できること、および、1 つのセッションに複数のオブジェクトが存在できることを意味します。The mapping between package objects and sessions is many to many, which means that an object can appear in several sessions, and a session can contain several objects.

  • 同じイベント (イベント 1) またはターゲット (ターゲット 1) を複数のセッションで使用できる。The same event (Event 1) or target (Target 1) can be enabled in more than one session.

セッションには次の特徴があります。Sessions have the following characteristics:

  • アクションおよび述語は、セッション単位でイベントにバインドされる。Actions and predicates are bound to events on a per-session basis. たとえば、アクション 1 および述語 Z を持つセッション A のイベント 1 は、アクション 2 とアクション 3 を持ち、述語を持たないセッション B のイベント 1 には一切影響しません。If you have Event 1 in Session A with Action 1 and Predicate Z, this will not in any way affect having Event 1 in Session B with Action 2 and Action 3 with no predicate.

  • セッションには、バッファリングとディスパッチおよび因果関係の追跡を処理するためのポリシーがアタッチされる。Policies are attached to sessions to handle buffering and dispatch, and causality tracking.

バッファリングとディスパッチBuffering and dispatch

バッファリングとは、イベント セッションの実行中にイベント データをどのように格納するかをいいます。Buffering refers to how event data is stored while an event session is running. イベント データに使用するメモリ サイズやイベントの削除ポリシーは、バッファリング ポリシーによって指定されます。Buffering policies specify how much memory to use for event data, and the loss policy for the events. ディスパッチとは、ターゲットによって処理される前のイベントがバッファー内に存続する時間のことです。Dispatch refers to the amount of time events will stay in buffers before being served to targets for processing.

因果関係の追跡Causality tracking

因果関係の追跡は、複数のタスクにわたって作業を追跡する機能です。Causality tracking provides the ability to track work across multiple tasks. 因果関係の追跡を有効にした場合、発生したイベントには、それぞれシステム全体を通じて一意のアクティビティ ID が割り当てられます。When causality tracking is enabled, each event fired has a unique activity ID across the system. アクティビティ ID は、GUID 値 (特定のタスクに対して割り当てられ、すべてのイベントを通じて変化しない) とシーケンス番号 (イベントが発生するたびにインクリメントされる) の組み合わせです。The activity ID is a combination of a GUID value that remains constant across all events for a task, and a sequence number that is incremented each time an event is fired. あるタスクが原因で別のタスクで作業が必要になった場合、親のアクティビティ ID が子のタスクに送信されます。When one task causes work to be done on another, the activity ID of the parent is sent to the child task. 子のタスクは、イベントの初回発生時に親のアクティビティ ID を出力します。The child task outputs the parent's activity ID the first time it fires an event.

拡張イベント アーキテクチャは、さまざまなオブジェクトを組み合わせて特定の問題を解決できる柔軟なシステムを提供します。The Extended Events architecture provides a flexible system that allows a variety of objects to be used together to solve specific problems.

参照See Also

拡張イベントExtended Events