SQL Server プロファイラー
適用対象: SQL Server Azure SQL Managed Instance
SQL Server プロファイラー は、トレースを作成および管理し、トレースの結果を分析および再生するためのインターフェイスです。 イベントはトレース ファイルに保存され、後で分析したり、問題を診断する際に具体的な一連のステップを再現するために利用できます。
重要
- SQL トレースと SQL Server プロファイラー は、非推奨です。 Microsoft SQL Server の Trace や Replay オブジェクトを含む Microsoft.SqlServer.Management.Trace 名前空間も非推奨とされます。 しかし、Analysis Services のワークロードはサポートされています。
- この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。
- 代わりに拡張イベントを使用します。 拡張イベントについて詳しくは、「クイック スタート:SQL Server 拡張イベント」および SSMS XEvent Profiler に関するページをご覧ください。
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 の
SELECT
、INSERT
、UPDATE
、DELETE
の各ステートメント。 - リモート プロシージャ コール (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 イベント クラスを選択し、そのデータ列である Error、State、および 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) |
拡張イベントと SQL Server プロファイラー
拡張イベントおよび SQL Server プロファイラーは、SQL Server のパフォーマンスを監視およびトラブルシューティングするためのツールです。 SQL Server プロファイラーは非推奨であり、Analysis Services でのみ使用する必要があります。 拡張イベントは SQL Server プロファイラーの代替手段であり、他では使用できない高度なトラブルシューティング機能が提供されています。 ここでは、SQL Server プロファイラー から拡張イベントへの移行に役立つよう、これらの主な違いについて説明します。
拡張イベントのツール
拡張イベントは、SQL Server に組み込まれた軽量で拡張性が高く、柔軟なイベント処理システムです。
拡張イベント セッションは通常、SQL トレースや SQL Server プロファイラーよりも消費するリソースが少ないため、運用環境に適しています。 拡張イベントでは、最新バージョンの SQL で使用できるイベントのキャプチャがサポートされています。
これに対し、SQL トレース/SQL Server プロファイラーで使用できるイベントは、SQL Server 2008R2 以前で使用できる機能に限定されます。 拡張イベントでは、優れたフィルター機能、小さいサイズの既定のペイロード、プロファイラーでサポートされていない機能 (メモリ内および集計ターゲット、マルチターゲットのサポートなど) が提供されます。
拡張イベントの詳細については、「 拡張イベント」を参照してください。
SQL Server プロファイラーのツール
SQL Server プロファイラーは、SQL トレースを使用して SQL Server または Analysis Services のインスタンスのアクティビティをキャプチャするグラフィカル ユーザー インターフェイスです。
正しく構成されていない場合、SQL Server プロファイラーがリソースを大量に消費する可能性があります。特に本番サーバーで使用する場合は、サーバーのパフォーマンスに影響します。 これには、クイック トレースをサポートするビルトインのテンプレートがあります。
要約すると、SQL Server プロファイラーは多くのユーザーにとってなじみのある古いツールですが、拡張イベントは、パフォーマンスの向上、より詳細なイベント情報、および他では使用できない SQL Server インスタンスのトラブルシューティングと監視の機能が提供される最新の代替手段です。 拡張イベントはプロファイラーよりも優れているため、新しいトレースと監視の作業には拡張イベントが推奨されます。