SQL Server プロファイラー

適用対象:SQL ServerAzure SQL Managed Instance

SQL Server プロファイラー は、トレースを作成および管理し、トレースの結果を分析および再生するためのインターフェイスです。 イベントはトレース ファイルに保存され、後で分析したり、問題を診断する際に具体的な一連のステップを再現するために利用できます。

重要

SQL トレースと SQL Server プロファイラー は、非推奨です。 Microsoft SQL Server の Trace や Replay オブジェクトを含む Microsoft.SqlServer.Management.Trace 名前空間も非推奨とされます。

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。

代わりに拡張イベントを使用します。 拡張イベントについて詳しくは、「クイック スタート:SQL Server 拡張イベント」および SSMS XEvent Profiler に関するページをご覧ください。

Note

SQL Server プロファイラー for Analysis Services のワークロードがサポートされています。

Note

SQL Server プロファイラーから Azure SQL データベースに接続しようとすると、次のような誤解を招くエラー メッセージが誤ってスローされます。

  • SQL Server に対してトレースを実行するには、sysadmin 固定サーバー ロールのメンバーであるか、ALTER TRACE 権限が許可されている必要があります。

このメッセージでは、Azure SQL Database が SQL Server プロファイラーでサポートされていないことを説明すべきでした。

プロファイラーはどこにありますか?

Profiler は、SQL Server Management Studio 内で、または Azure Data Studio で SQL Server Profiler 拡張機能を使用して起動することができます。

トレース データをキャプチャし再生する

以下の表に、 SQL Server でトレース データのキャプチャおよび再生を行うために使用が推奨される機能を示します。

機能\対象のワークロード リレーショナル エンジン Analysis Services
トレースのキャプチャ SQL Server Management Studio の拡張イベント のグラフィカル ユーザー インターフェイス SQL Server プロファイラー
トレースの再生 分散再生 SQL Server プロファイラー

SQL Server Profiler を使用する

Microsoft SQL Server プロファイラー は、 データベース エンジン または Analysis Services のインスタンスを監視するための SQL トレースのグラフィカル ユーザー インターフェイスです。 各イベントに関するデータをキャプチャし、ファイルやテーブルに保存して、後で分析できます。 たとえば、稼動環境を監視して、どのストアド プロシージャの実行が遅く、パフォーマンスに影響を与えているかを確認できます。 SQL Server プロファイラー は、次のようなアクティビティに使用します。

  • 問題の原因を特定するため、問題の発生したクエリを順次実行する。

  • 実行速度の遅いクエリを検出し、その原因を診断する。

  • 問題の原因となる一連の Transact-SQL ステートメントをキャプチャする。 トレース ファイルに保存された内容をテスト サーバー上にレプリケートし、問題の診断に利用できます。

  • ワークロードを調整するため、 SQL Server のパフォーマンスを監視する。 データベース ワークロードに関してデータベースの物理設計を調整する方法については、「 Database Engine Tuning Advisor」を参照してください。

  • 問題を診断するために、さまざまなパフォーマンス カウンターの関連を調べる。

SQL Server プロファイラー では、SQL Server インスタンスで実行された操作の監査もサポートしています。 監査では、後でセキュリティ管理者が調査できるように、セキュリティ関連の操作を記録します。

SQL Server Profiler の概念

SQL Server プロファイラーを使用するには、ツールがどのように機能するのかを説明する用語を理解しておく必要があります。

Note

SQL Server プロファイラー を使用するとき、SQL トレースの知識が実際に役立ちます。 詳細については、「 SQL Trace」を参照してください。

Event

イベントとは、 SQL Server データベース エンジンのインスタンス内で発生するアクションです。 次に例を示します。

  • ログインの接続、失敗、および接続解除。
  • Transact-SQL の SELECTINSERTUPDATEDELETE の各ステートメント。
  • リモート プロシージャ コール (RPC) のバッチ ステータス。
  • ストアド プロシージャの開始または終了。
  • ストアド プロシージャ内のステートメントの開始または終了。
  • SQL バッチの開始または終了。
  • SQL Server のエラー ログに書き込まれたエラー。
  • データベース オブジェクトで取得または解放されたロック。
  • 開かれたカーソル。
  • セキュリティ権限の確認。

イベントによって生成されたデータは、すべてトレースに 1 行で表示されます。 この行の各データ列には、イベントの詳しい説明が表示されます。

EventClass

イベント クラスは、トレースできるイベントの種類を定義します。 イベント クラスには、イベントが報告できるすべてのデータが含まれています。 イベント クラスの例を次に示します。

  • SQL:BatchCompleted
  • Audit Login
  • Audit Logout
  • Lock:Acquired
  • Lock:Released

EventCategory

イベント カテゴリは、 SQL Server プロファイラー内でイベントを分類する方法を定義します。 たとえば、ロック イベント クラスはすべて、 ロック イベント カテゴリに分類されます。 ただし、イベント カテゴリは SQL Server プロファイラーでしか存在しません。 この用語に、エンジン イベントを分類する方法は反映されていません。

DataColumn

各データ列は、トレースでキャプチャされるイベント クラスの属性です。 収集できるデータの種類はイベント クラスによって異なるため、必ずしもすべてのデータ列がすべてのイベント クラスに使用されるわけではありません。 たとえば、Lock:Acquired イベント クラスをキャプチャするトレースでは、ロックされたページ ID またはロックされた行の値が BinaryData データ列に格納されますが、Integer Data データ列にはまったく値が格納されません。これは、キャプチャ対象のイベント クラスにこのデータ列が適合しないためです。

Template

テンプレートは、トレースの既定の構成を定義します。 特に、テンプレートには、 SQL Server プロファイラーを使用して監視するイベント クラスを指定します。 たとえば、イベント、データ列、およびフィルターを指定するテンプレートを作成できます。 テンプレートは実行されませんが、.tdf 拡張子を持つファイルとして保存されます。 保存したテンプレートは、そのテンプレートに基づいて作成したトレースの実行時にどのようなトレース データをキャプチャするかを制御します。

Trace

トレースでは、選択したイベント、データ列、およびフィルターに基づいたデータをキャプチャします。 たとえば、例外エラーを監視するトレースを作成できます。 これには、 Exception イベント クラスを選択し、そのデータ列である ErrorState、および Severity を選択します。 トレース結果で意味のあるデータを示すには、これら 3 列のデータを収集する必要があります。 このようにして構成されたトレースを実行し、サーバーで発生するすべての Exception イベントに関するデータを収集することができます。 トレース データは、保存することも、すぐに分析に使用することもできます。 トレースは、後日再生できます。ただし、 Exception イベントなど、再生不可能なイベントもあります。 また、トレースをテンプレートとして保存しておき、これに似たトレースを後日作成することもできます。

SQL Server では、SQL Server のインスタンスをトレースするための方法が 2 つ用意されています。つまり、SQL Server プロファイラー を使用してトレースする方法と、システム ストアド プロシージャを使用してトレースする方法です。

Assert

トレースまたはテンプレートを作成する際には、指定したイベントで収集されたデータをフィルターで選択する基準を定義できます。 トレースが大きくなりすぎないようにするためには、イベント データのサブセットだけが収集されるようにフィルターを適用します。 たとえば、トレースでキャプチャする Microsoft Windows のユーザー名を特定のユーザーに限定して出力データを絞り込むことができます。

フィルターが設定されていない場合は、選択したイベント クラスのすべてのイベントがトレースに出力されます。

SQL Server Profiler のタスク

タスクの説明 トピック
特定の種類のイベントを監視することを目的として SQL Server に備わっている定義済みのテンプレートと、トレースを再生するために必要なアクセス許可を紹介します。 SQL Server プロファイラーのテンプレートとアクセス許可
SQL Server Profiler を実行する方法について説明します。 SQL Server Profiler の実行に必要なアクセス許可
トレースの作成方法について説明します。 トレースの作成 (SQL Server Profiler)
トレース ファイルに含めるイベントおよびデータ列を指定する方法について説明します。 トレース ファイルに含めるイベントとデータ列の指定 (SQL Server Profiler)
トレース結果をファイルに保存する方法について説明します。 トレース結果のファイルへの保存 (SQL Server Profiler)
トレース結果をテーブルに保存する方法について説明します。 トレース結果のテーブルへの保存 (SQL Server Profiler)
トレース内のイベントをフィルター処理する方法について説明します。 トレース内のイベントへのフィルターの適用 (SQL Server Profiler)
フィルター情報を表示する方法について説明します。 フィルター情報の表示 (SQL Server Profiler)
フィルターを変更する方法について説明します。 フィルターの変更 (SQL Server Profiler)
トレース ファイルの最大ファイル サイズを設定する方法について説明します (SQL Server プロファイラー)。 トレース ファイル (SQL など) の最大ファイル サイズを設定する
トレース テーブルの最大テーブル サイズを設定する方法について説明します。 トレース テーブルの最大テーブル サイズの設定 (SQL Server Profiler)
トレースの開始方法について説明します。 トレースを開始する
サーバーへの接続後、トレースを自動的に開始する方法について説明します。 サーバーへの接続後の自動的なトレースの開始 (SQL Server Profiler)
イベントの開始時刻に基づいてイベントをフィルター選択する方法について説明します。 イベントの開始時刻に基づいたイベントのフィルター選択 (SQL Server Profiler)
イベントの終了時刻に基づいてイベントをフィルター選択する方法について説明します。 イベントの終了時刻に基づいたフィルターでのイベントの選択 (SQL Server Profiler)
トレース内のサーバー プロセス ID (SPID) をフィルター選択する方法について説明します。 トレース (SQL など) 内のサーバー プロセス ID (SPID) をフィルター選択する
トレースを一時停止する方法について説明します。 トレースの一時停止 (SQL Server Profiler)
トレースを停止する方法について説明します。 トレースの停止 (SQL Server Profiler)
一時停止後または停止後にトレースを実行する方法について説明します。 一時停止または停止したトレースの再開 (SQL Server Profiler)
トレース ウィンドウをクリアする方法について説明します。 トレース ウィンドウの消去 (SQL Server Profiler)
トレース ウィンドウを閉じる方法について説明します。 トレース ウィンドウを閉じる (SQL Server Profiler)
トレース定義の既定値を設定する方法について説明します。 トレース定義の既定値の設定 (SQL Server Profiler)
トレース表示の既定値を設定する方法について説明します。 トレース表示の既定値の設定 (SQL Server Profiler)
トレース ファイルを開く方法について説明します。 トレース ファイルを開く (SQL Server Profiler)
トレース テーブルを開く方法について説明します。 トレース テーブルを開く (SQL Server Profiler)
トレース テーブルを再生する方法について説明します。 トレース テーブルの再生 (SQL Server Profiler)
トレース ファイルを再生する方法について説明します。 トレース ファイルの再生 (SQL Server Profiler)
一度に単一のイベントを再生する方法について説明します。 一度に単一のイベントの再生 (SQL Server Profiler)
ブレークポイントまで再生する方法について説明します。 ブレークポイントまでの再生 (SQL Server Profiler)
カーソルまで再生する方法について説明します。 カーソルまでの再生 (SQL Server Profiler)
Transact-SQL スクリプトを再生する方法について説明します。 Transact-SQL スクリプトの再生 (SQL Server Profiler)
トレース テンプレートの作成方法について説明します。 トレース テンプレートの作成 (SQL Server Profiler)
トレース テンプレートの変更方法について説明します。 トレース テンプレートの変更 (SQL Server Profiler)
グローバル トレース オプションを設定する方法について説明します。 グローバル トレース オプションの設定 (SQL Server Profiler)
トレース中に値列またはデータ列を検索する方法について説明します。 トレース中の値列またはデータ列の検索 (SQL Server Profiler)
実行中のトレースからテンプレートを作成する方法について説明します。 実行中のトレースからのテンプレートの作成 (SQL Server Profiler)
トレース ファイルまたはトレース テーブルからテンプレートを作成する方法について説明します。 トレース ファイルまたはトレース テーブルからのテンプレートの作成 (SQL Server Profiler)
トレースを実行するための Transact-SQL スクリプトを作成する方法について説明します。 トレースを実行するための Transact-SQL スクリプトの作成 (SQL Server Profiler)
トレース テンプレートをエクスポートする方法について説明します。 トレース テンプレートのエクスポート (SQL Server Profiler)
トレース テンプレートをインポートする方法について説明します。 トレース テンプレートのインポート (SQL Server Profiler)
スクリプトをトレースから抽出する方法について説明します。 トレースからのスクリプトの抽出 (SQL Server Profiler)
トレースと Windows パフォーマンス ログ データを相互に関連付ける方法について説明します。 トレースと Windows パフォーマンス ログ データの関連付け (SQL Server Profiler)
トレースに表示される列を構成する方法について説明します。 トレースに表示される列の構成 (SQL Server Profiler)
SQL Server プロファイラー の開始方法について説明します。 SQL Server Profiler の起動
トレースとトレース テンプレートを保存する方法について説明します。 トレースとトレース テンプレートの保存
トレース テンプレートの変更方法について説明します。 トレース テンプレートを変更する
トレースと Windows パフォーマンス ログ データを相互に関連付ける方法について説明します。 トレースと Windows パフォーマンス ログ データの関連付け
SQL Server プロファイラー を使用したトレースの表示と分析の方法について説明します。 SQL Server Profiler を使用したトレースの表示と分析
SQL Server プロファイラー を使用してデッドロックを分析する方法について説明します。 SQL Server Profiler を使用したデッドロックの分析
SQL Server Profiler での SHOWPLAN 結果を使用してクエリを分析する方法について説明します。 SQL Server Profiler での Showplan 結果を使用したクエリの分析
SQL Server プロファイラー でトレースにフィルターを適用する方法について説明します。 SQL Server Profiler でのトレースへのフィルターの適用
SQL Server プロファイラー の再生機能の使用方法について説明します。 トレースの再生
SQL Server プロファイラー の状況依存のヘルプ トピックについて紹介します。 SQL Server Profiler の F1 ヘルプ
SQL Server プロファイラー でパフォーマンスと利用状況を監視する際に使用される一連のシステム ストアド プロシージャを紹介します。 SQL Server Profiler のストアド プロシージャ (Transact-SQL)