適用対象: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 に関するページをご覧ください。
SQL Server プロファイラーから Azure SQL データベースに接続しようとすると、次のような誤解を招くエラー メッセージが表示されます。
To run a trace against SQL Server, you must be a sysadmin fixed server role member or have the ALTER TRACE permission.
このメッセージは、Azure SQL Database が SQL Server プロファイラーでサポートされていないことを説明している必要があります。
Profiler はどこにありますか?
プロファイラーは、 SQL Server Profiler の実行 内で、または SQL Server Profiler 拡張機能 (プレビュー) を使用して開始できます。
トレース データをキャプチャし再生する
以下の表に、 SQL Server でトレース データのキャプチャおよび再生を行うために使用が推奨される機能を示します。
機能\対象のワークロード | リレーショナル エンジン | Analysis Services |
---|---|---|
トレースキャプチャ | SQL Server Management Studio での拡張イベントの概要グラフィカル ユーザー インターフェイス | SQL Server プロファイラー |
トレースの再生 | SQL Server Distributed Replay 概要 | 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 プロファイラーを使用するには、ツールがどのように機能するのかを説明する用語を理解しておく必要があります。
SQL Server プロファイラーを使用する際、SQL トレースの知識が役立ちます。 詳細については、「 SQL Trace」を参照してください。
イベント
イベントとは、 SQL Server データベース エンジンのインスタンス内で発生するアクションです。 次に例を示します。
- ログインの接続、失敗、および接続解除。
- Transact-SQL の
SELECT
、INSERT
、UPDATE
、DELETE
の各ステートメント。 - リモート プロシージャ コール (RPC) のバッチ ステータス。
- ストアド プロシージャの開始または終了。
- ストアド プロシージャ内のステートメントの開始または終了。
- SQL バッチの開始または終了。
- SQL Server のエラー ログに書き込まれたエラー。
- データベース オブジェクトで取得または解放されたロック。
- 開かれたカーソル。
- セキュリティ権限の確認。
イベントによって生成されたデータは、すべてトレースに 1 行で表示されます。 この行の各データ列には、イベントの詳しい説明が表示されます。
EventClass
イベント クラスは、トレースできるイベントの種類を定義します。 イベント クラスには、イベントが報告できるすべてのデータが含まれています。 イベント クラスの例を次に示します。
- SQL:BatchCompleted
- Audit Login
- 監査ログアウト
- ロック: 取得済み
- ロック: 解除
イベントカテゴリ
イベント カテゴリは、 SQL Server プロファイラー内でイベントを分類する方法を定義します。 たとえば、ロック イベント クラスはすべて、 ロック イベント カテゴリに分類されます。 ただし、イベント カテゴリは SQL Server プロファイラーでしか存在しません。 この用語に、エンジン イベントを分類する方法は反映されていません。
データカラム
各データ列は、トレースでキャプチャされるイベント クラスの属性です。 収集できるデータの種類はイベント クラスによって異なるため、必ずしもすべてのデータ列がすべてのイベント クラスに適用されるわけではありません。 たとえば、Lock:Acquired イベント クラスをキャプチャするトレースでは、ロックされたページ ID または行の値が BinaryData データ列に含まれますが、Integer Data データ列には含まれません。これは、キャプチャ対象のイベント クラスにこのデータ列が適用されないためです。
テンプレート
テンプレートは、トレースの既定の構成を定義します。 特に、監視対象として SQL Server プロファイラーで指定するイベント クラスが含まれています。 たとえば、イベント、データ列、およびフィルターを指定するテンプレートを作成できます。 テンプレートは実行されませんが、.tdf 拡張子を持つファイルとして保存されます。 保存したテンプレートにより、そのテンプレートに基づいて作成したトレースの実行時にどのようなトレース データをキャプチャするかが制御されます。
トレース
トレースでは、選択したイベント、データ列、およびフィルターに基づいたデータをキャプチャします。 たとえば、例外エラーを監視するトレースを作成できます。 これを行うには、Exception イベント クラスを選択し、そのデータ列である Error、State、および Severity を選択します。 トレース結果で意味のあるデータを示すには、これら 3 列のデータを収集する必要があります。 このようにして構成されたトレースを実行し、サーバーにおけるすべての Exception イベントに関するデータを収集できます。 トレース データは、保存することも、すぐに分析に使用することもできます。 トレースは、後で再生できます。ただし、Exception イベントなど、再生不可能なイベントもあります。 また、トレースをテンプレートとして保存しておき、これに似たトレースを作成することもできます。
SQL Server では、SQL Server のインスタンスをトレースするための方法が 2 つ用意されています。つまり、SQL Server プロファイラー を使用してトレースする方法と、システム ストアド プロシージャを使用してトレースする方法です。
フィルター
トレースまたはテンプレートを作成する際には、指定したイベントで収集されたデータをフィルターで選択する基準を定義できます。 トレースが大きくなりすぎないようにするためには、イベント データのサブセットだけが収集されるようにフィルターを適用します。 たとえば、トレース内の Microsoft Windows のユーザー名を特定のユーザーに限定することで、出力データを絞り込むことができます。
フィルターが設定されていない場合、トレースの出力では選択したイベント クラスのすべてのイベントが返されます。
SQL Server Profiler のタスク
タスクの説明 | [アーティクル] |
---|---|
特定のイベントの監視を目的として 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 プロファイラー) |
フィルター情報を表示する方法について説明します。 | フィルター情報の表示 (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) |
トレース内のセッション ID をフィルター処理する方法について説明します。 | トレース内のセッション ID をフィルター処理する (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) |
一度に単一のイベントを再生する方法について説明します。 | 一度に 1 つのイベントを再生する (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) |
トレースを実行するための Transact-SQL スクリプトを作成する方法について説明します。 | トレースを実行するための Transact-SQL スクリプトを作成する (SQL Server Profiler) |
トレース テンプレートをエクスポートする方法について説明します。 | トレース テンプレートをエクスポートする (SQL Server Profiler) |
トレース テンプレートをインポートする方法について説明します。 | トレース テンプレートのインポート (SQL Server Profiler) |
スクリプトをトレースから抽出する方法について説明します。 | トレースからスクリプトを抽出する (SQL Server Profiler) |
トレースと Windows パフォーマンス ログ データを相互に関連付ける方法について説明します。 | トレースと Windows パフォーマンス ログ データの関連付け |
トレースに表示される列を構成する方法について説明します。 | トレースに表示される列を整理する (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 プロファイラー |
拡張イベントと SQL Server プロファイラー
拡張イベントの概要 と SQL Server Profiler は、SQL Server のパフォーマンスを監視およびトラブルシューティングするためのツールです。 SQL Server Profiler は非推奨であり、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 Profiler は、不適切に構成されている場合にリソースを大量に消費する可能性があります。これは、特に運用サーバーで使用されている場合に、サーバーのパフォーマンスに影響します。 これには、クイック トレースをサポートするビルトインのテンプレートがあります。
要約すると、SQL Server Profiler は多くのユーザーにとってなじみのある古いツールですが、拡張イベントは、パフォーマンスの向上、より詳細なイベント情報、および他の場所では使用できない SQL Server インスタンスのトラブルシューティングと監視の機能を提供する最新の代替手段です。 拡張イベントはプロファイラーよりも優れているため、新しいトレースと監視の作業には拡張イベントが推奨されます。