SQL Server 拡張イベントを使用した Analysis Services の監視

適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

拡張イベント (xEvents) は、ごく少数のシステム リソースを使用する軽量のトレースおよびパフォーマンス監視システムであり、運用サーバーとテスト サーバーの両方で問題を診断するための理想的なツールです。 また、拡張性が高く、構成可能で、SQL Server 2016 では、新しい組み込みツールのサポートによって簡単に使用できます。 SQL Server Management Studio (SSMS) では、Analysis Services インスタンスへの接続で、SQL Server Profilerの使用と同様に、ライブ トレースを構成、実行、監視できます。 優れたツールを追加することで、SQL Server Profiler から xEvent に置き換える合理性が高まり、データベース エンジンと Analysis Services ワークロードの問題を同等に診断できるようになります。

SQL Server Management Studioに加えて、以前のリリースでサポートされていたように、XMLA スクリプトを使用して、SQL Server Analysis Services拡張イベント セッションを以前の方法で構成することもできます。

拡張イベント」で定義されているように、特定のコンシューマーを対象としたすべての Analysis Services イベントをキャプチャできます。

SSMS を使用して Analysis Services を構成する

表形式インスタンスと多次元インスタンスの両方について、SSMS には、ユーザーが開始した xEvent セッションを含む管理フォルダーが表示されます。 一度に複数のセッションを実行することができます。 ただし、現在の実装では、SQL Server Analysis Services拡張イベント ユーザー インターフェイスでは、既存のセッションの更新または再生はサポートされていません。

SSMS を使用してPower BI Premium ワークスペースに接続する場合、管理フォルダーはサポートされていません。

ssas_extended_events_ssms_start

イベントの選択

キャプチャするイベントを既に把握している場合、最も簡単にイベントをトレースに追加する方法は、イベントを検索することです。 それ以外の場合、通常は次のイベントが操作の監視で使用されます。

  • CommandBeginCommandEnd

  • QueryBeginQueryEnd、および QuerySubcubeVerbose (サーバーに送信された MDX または DAX クエリ全体が表示されます)。さらに、クエリにより消費されたリソースと、返される行数の統計を示す ResourceUsage

  • ProgressReportBeginProgressReportEnd (処理中の操作用)。

  • AuditLogin および AuditLogout (クライアント アプリケーションが Analysis Services に接続しているユーザー ID をキャプチャする)。

データ ストレージの選択

セッションは、Management Studio のウィンドウでライブ ストリーミングするか、Power Query または Excel を使用して以後の分析のためにファイルに保存することができます。

  • event_file では、セッション データが .xel ファイルに保存されます。

  • event_stream では、 Management Studio の [ライブ データ監視] オプションが有効になります。

  • ring_buffer では、サーバーが実行されている間のセッション データがメモリに保存されます。 サーバーが再起動すると、セッション データは破棄されます。

イベント フィールドを追加する

必要な情報が簡単にわかるように、セッションはイベント フィールドが含まれるように構成してください。

ダイアログ ボックスの一番端に[構成] オプションがあります。

ボックスの右側で [構成] オプションが強調表示されているダイアログ ボックスのスクリーンショット。

[構成] の [イベント フィールド] タブで [TextData] を選択して、このフィールドがサーバーで実行されているクエリを含む戻り値を示した状態でイベントの隣に表示されるようにします。

目的のイベントとデータ ストレージのセッションを構成したら、スクリプト ボタンをクリックして、ファイル、SQL Server Management Studioの新しいクエリ、クリップボードなど、サポートされているいずれかの宛先に構成を送信できます。

セッションを更新する

セッションを作成したら、作成したセッションが表示されるように、Management Studio の [セッション] フォルダーを更新してください。 event_stream を構成した場合は、セッション名を右クリックして [ライブ データ監視] を選択すると、サーバーの利用状況をリアルタイムで監視できます。

開始する XMLA スクリプト

拡張イベントのトレースは、以下のような XMLA のオブジェクト作成スクリプト コマンドを使用して有効にします。

<Execute ...>  
   <Command>  
      <Batch ...>  
         <Create ...>  
            <ObjectDefinition>  
               <Trace>  
                  <ID>trace_id</ID>  
                  <Name>trace_name</Name>  
                  <ddl300_300:XEvent>  
                     <event_session ...>  
                        <event package="AS" name="AS_event">  
                           <action package="PACKAGE0" .../>  
                        </event>  
                        <target package="PACKAGE0" name="asynchronous_file_target">  
                           <parameter name="filename" value="data_filename.xel"/>  
                           <parameter name="metadatafile" value="metadata_filename.xem"/>  
                        </target>  
                     </event_session>  
                  </ddl300_300:XEvent>  
               </Trace>  
            </ObjectDefinition>  
         </Create>  
      </Batch>  
   </Command>  
   <Properties></Properties>  
</Execute>  

ユーザーは、トレースのニーズに応じて、次の要素を定義します。

trace_id
このトレースの一意識別子を定義します。

trace_name
このトレースに付ける名前を指定します (通常は、人間が判読できるトレースの定義です)。 trace_id の値を名前として使用するのが一般的です。

AS_event
公開する Analysis Services イベントを指定します。 イベントの名前については、「 Analysis Services トレース イベント 」を参照してください。

data_filename
イベント データを含むファイルの名前を指定します。 この名前には、トレースを繰り返し送信する場合にデータが上書きされないように、タイムスタンプを使用したサフィックスが付けられます。

metadata_filename
イベント メタデータを含むファイルの名前を指定します。 この名前には、トレースを繰り返し送信する場合にデータが上書きされないように、タイムスタンプを使用したサフィックスが付けられます。

停止する XMLA スクリプト

拡張イベントのトレース オブジェクトを停止するには、以下のような XMLA のオブジェクト削除スクリプト コマンドを使用して、そのオブジェクトを削除する必要があります。

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">  
   <Command>  
      <Batch ...>  
         <Delete ...>  
            <Object>  
               <TraceID>trace_id</TraceID>  
            </Object>  
         </Delete>  
      </Batch>  
   </Command>  
   <Properties></Properties>  
</Execute>  
  

ユーザーは、トレースのニーズに応じて、次の要素を定義します。

trace_id
削除するトレースの一意識別子を定義します。

こちらもご覧ください

拡張イベントのSQL Server