今すぐ共有:

 

目次 隠す

1. 概要 SQL Server プロファイラー

1.1とは SQL Server プロファイラーとその必要性

SQL Server プロファイラーは、システム内で発生するイベントを監視およびキャプチャするためのグラフィカルユーザーインターフェースツールです。 SQL Serverこの強力な診断ostic ツールを使用すると、データベース管理者と開発者はデータベース エンジンのアクティビティをリアルタイムで観察できるため、パフォーマンスのボトルネックの特定、アプリケーションの問題のトラブルシューティング、セキュリティ イベントの監査に役立ちます。

SQL Server プロファイラー

1.2 SQL Server 2025年のプロファイラー:現状と代替案

Microsoft 非推奨 SQL Server プロファイラーtarと鳴る SQL Server 2016年、推奨 延長イベント 代替技術として。ただし、このツールは現在も利用可能である。 SQL Server バージョンを含む SQL Server 2022 年現在でもデータベース専門家の間で広く使用されています。

1.3 このガイドの対象者

  • このガイドは、監視する必要があるデータベース管理者を対象としています。 SQL Server インスタンスを監視し、パフォーマンスの問題を診断し、システムの信頼性を確保します。DBAは、トレースのキャプチャ、イベントの分析、監視戦略の実装に関する実用的なガイダンスを見つけることができます。
  • アプリケーション開発者は、コードがどのように相互作用するかを理解することで恩恵を受けます。 SQL ServerSQL プロファイラーは、開発者が非効率的なクエリを識別し、アプリケーションの動作を検証し、データベース関連のエラーをデバッグするのに役立ちます。
  • パフォーマンスアナリストやコンサルタントは、ワークロード分析、キャパシティプランニング、システム最適化のための高度な手法を習得できます。トレース設定、フィルタリング、分析を包括的にカバーすることで、データベースの徹底的なパフォーマンス評価が可能になります。

2 理解 SQL Server プロファイラーの基礎

2.1どのように SQL Server プロファイラーワークス

SQL Server プロファイラは、内部で実行されているSQLトレースエンジンに接続するクライアントアプリケーションとして動作します。 SQL Serverトレースを作成すると、データベースエンジンは指定されたイベントを監視し、設定に従ってキャプチャします。トレースエンジンは、適切に設定されていれば、サーバーのパフォーマンスへの影響を最小限に抑えながらイベントデータを収集します。

基盤となるSQLトレース・インフラストラクチャは、データベースエンジン全体で軽量なイベントフックを使用します。トレース定義に一致するイベントが発生すると、エンジンは関連情報をキャプチャし、プロファイラー・インターフェースに送信するか、ファイルまたはテーブルに保存します。このアーキテクチャにより、アプリケーションコードを変更することなく柔軟なデータ収集が可能になります。

2.2 主要概念と用語

2.2.1イベント

イベントは、 SQL Server トレースエンジンがキャプチャできるイベント。各イベントは、特定のデータベース操作またはシステムアクティビティに対応します。 SQL Server プロファイラーはイベントを論理的なカテゴリに整理し、構成を容易にします。

一般的なイベントカテゴリには、クエリ実行用のTSQL、プロシージャ呼び出し用のストアドプロシージャ、同時実行監視用のロック、例外追跡用のエラーと警告などがあります。適切なイベントを選択することで、トレースで取得する情報が決まり、トレースの有用性とパフォーマンスのオーバーヘッドに直接影響します。

イベントの種類を理解することで、効果的なトレースを設定することができます。RPC:Completed イベントはリモート プロシージャ コールの完了をキャプチャし、SQL:BatchCompleted イベントはアドホック クエリのバッチを追跡し、Lock:Deadlock イベントはデッドロックの発生を特定します。トラブルシューティングや監視の目的に合わせて、適切なイベントを選択してください。

2.2.2 データ列

データ列は、各イベントについてトレースが取得する情報を定義します。一般的な列には、実際のSQL文のTextData、実行時間のDuration、プロセッサ使用率のCPU、論理ディスク読み取りのReads、論理ディスク書き込みのWritesなどがあります。

必須の列はユースケースによって異なります。パフォーマンスのトラブルシューティングには通常、Duration、CPU、Reads、Writes の各列が必要です。セキュリティ監査には、LoginName、DatabaseName、ObjectName の各列が必要です。アプリケーションのデバッグには、ApplicationName、SPID、Error の各列が役立ちます。

必要な列のみを選択すると、トレースのオーバーヘッドが削減され、分析が簡素化されます。特に必要な場合を除き、利用可能なすべての列をキャプチャすることは避けてください。列を追加するごとに収集および処理されるデータの量が増加し、サーバーのパフォーマンスに影響を与える可能性があります。

2.2.3フィルタ

フィルターは、指定された基準に基づいてトレースがキャプチャするイベントを制限します。適切に設定されたフィルターはトレースボリュームを大幅に削減し、分析を管理しやすくし、パフォーマンスへの影響を最小限に抑えます。フィルターはキャプチャ前にイベントデータを評価するため、不要なデータ収集を防止します。

一般的なフィルター条件には、特定のデータベースに焦点を絞るDatabaseName、特定のアプリケーションを分離するApplicationName、低速な操作のみをキャプチャするDuration、特定のユーザーを追跡するLoginNameなどがあります。複数のフィルターを組み合わせることで、必要なものを正確にキャプチャする正確なトレース定義を作成できます。

パフォーマンスを重視したフィルタリングは、本番環境では不可欠です。システムアクティビティのキャプチャを回避するため、常にDatabaseNameまたはApplicationNameでフィルタリングしてください。実行時間の最小しきい値を設定して、高速に実行されるクエリを無視してください。TextDataフィルターは文字列比較を必要とするため、オーバーヘッドが発生するため、慎重に使用してください。

2.2.4 トレーステンプレート

トレース テンプレートは、一般的なシナリオ向けに事前構成されたイベント、列、およびフィルターの選択を提供します。 SQL Server プロファイラーには、sとして機能するいくつかの組み込みテンプレートが含まれています。tarトレース作成のためのトレースポイント。カスタムテンプレートは設定を保存し、複数のトレースセッションで再利用できるようにします。

標準テンプレートは、基本的な監視に適した一般的なイベントセットをキャプチャします。TSQLテンプレートは、最小限のオーバーヘッドでクエリ実行に重点を置いています。チューニングテンプレートは、データベースエンジンチューニングアドバイザーの分析に特化したイベントを収集します。各テンプレートは、情報キャプチャとパフォーマンスへの影響のバランスをとっています。

カスタムテンプレートを作成すると、時間を節約し、トレースセッション間の一貫性を確保できます。お好みのイベント、列、フィルターでトレースを設定し、テンプレートとして保存します。カスタムテンプレートは、同様の問題を繰り返しトラブルシューティングする場合に特に役立ちます。

3. Sを取得するtarでテッド SQL Server プロファイラー

3.1 システム要件と前提条件

SQL Server プロファイラーには以下がバンドルされています SQL Server Management Studioと現在メンテナンスされているすべてのものをサポートします SQL Server バージョン、から SQL Server 2016へ2022。

権限要件によって、誰がトレースを作成および実行できるかが決まります。sysadmin固定サーバーロールのメンバーは、以下の権限に無制限にアクセスできます。 SQL Server プロファイラー機能。システム管理者以外のユーザーの場合、ALTER TRACE 権限によりトレースを作成および管理する権限が付与されます。

リモートサーバーをトレースする場合は、ネットワークに関する考慮事項が適用されます。クライアント側のトレースでは、ワークステーションとサーバー間の継続的なネットワーク接続が必要です。 SQL Server インスタンス。接続が中断されるとクライアント側のトレースが停止し、キャプチャされたデータが失われる可能性があります。サーバー側のトレースは、データベースサーバー上で完全に実行されるため、この制限を回避できます。

3.2 起動方法 SQL Server プロファイラー

3.2.1 Starからのティン SQL Server 管理スタジオ (SSMS)

起動するには以下の手順に従ってください SQL Server SSMS からのプロファイラー:

  1. 店は開いています SQL Server Management Studioに接続して SQL Server インスタンス。
  2. クリック ツール 上部のメニューバーにあるメニュー。
  3. 選択する SQL Server プロファイラー ドロップダウンメニューから選択します。
  4. その SQL Server プロファイラー アプリケーションが新しいウィンドウで起動します。

Start SQL Server プロファイラー SQL Server ManagementStudio。

3.2.2 StarWindows Sからのtartメニュー

アクセス SQL Server 以下の手順に従って、Windows から直接プロファイラーを実行します。

  1. 「ウィンドウ」をクリックします お気軽にご連絡ください
  2. タイプ SQL Server プロファイラー 検索ボックスに
  3. 選択する SQL Server プロファイラー 検索結果から
  4. アクティブな接続がない状態でアプリケーションが起動します。

Start SQL Server Windows 検索ボックスからプロファイラーを検索します。

または、Startメニューhierarチー:

  1. Video Cloud Studioで お気軽にご連絡ください メニュー。
  2. 動画内で Microsoft SQL Server ツール フォルダにコピーします。
  3. フォルダを展開してクリック SQL Server プロファイラー.

Start SQL Server Windows s のプロファイラーtart メニュー。

3.2.3 接続 SQL Server インスタンス

打ち上げ後 SQL Server プロファイラーでは、次の手順に従って接続を確立します。

  1. 詳しくはこちら File メニューバーに表示されます。
  2. 選択する 新しい痕跡 ドロップダウンメニューから選択します。
  3. その サーバーに接続する ダイアログが表示されます。
  4. サーバー名を入力してください サーバーの名前 フィールド。
  5. 選択する Windows認証 or SQL Server 認証.
  6. 使用している場合 SQL Server 認証、ログイン資格情報を入力します。
  7. 詳しくはこちら つながり、 接続を確立します。

に接続します SQL Server のインスタンス SQL Server プロファイラー。

リモート接続の場合は、インスタンス名を含む完全なサーバー名を指定します(適用する場合)。cab名前付きインスタンスの場合は、SERVERNAME\INSTANCENAME という形式を使用してください。接続に失敗した場合は、ネットワーク接続とファイアウォールの設定を確認してください。

4. 作成と設定 SQL Server 形跡

4.1 テンプレートを使用して最初のトレースを作成する

次の手順に従って最初のトレースを作成します。

  1. 起動する SQL Server プロファイラー。
  2. 詳しくはこちら File -> 新しい痕跡 そしてあなたの tarサーバーを取得します。
  3. その トレースプロパティ ダイアログが表示されます。
  4. わかりやすい名前を入力してください トレース名 フィールド。
  5. テンプレートを以下から選択 テンプレートを使用する ドロップダウン。
  6. 選択する 標準(デフォルト) 一般的な監視用のテンプレート。または、他の目的のための別のテンプレート。テンプレートには、一般的なシナリオ向けに事前設定されたイベント、列、フィルターが用意されています。
  7. 詳しくはこちら ラン その後、Ptarイベントを即時にキャプチャしません。

トレースプロパティを設定する SQL Server プロファイラー。

4.2 トレースをカスタマイズする

多くの場合、テンプレートでは要件を満たせないことがあります。そのような場合は、トレースを完全にカスタマイズできます。

  1. トレースプロパティ ダイアログ。
  2. まず ブランク テンプレートから テンプレートを使用する ドロップダウン。トレースには空白のテンプレートを使用します。
  3. クリック イベントの選択 タブでは、すべてのイベント、データ列、フィルターを要件に合わせてカスタマイズできます。これらについては、次のセクションで説明します。
    「トレース プロパティ」ダイアログの「イベント選択」タブでトレースをカスタマイズします。

4.3 キャプチャするイベントの選択

イベントを選択するには イベントの選択 タブ:

  1. クリック + イベント カテゴリの横にあるアイコンをクリックして展開します。
  2. イベントの横にあるチェックボックスをクリックして選択します。

「トレース プロパティ」ダイアログでイベントを選択します。

4.3.1 イベントカテゴリの理解

SQL Server プロファイラーはイベントを論理的にグループ化するためにカテゴリに分類します。ストアドプロシージャカテゴリには、SP:Sを含むプロシージャ実行のイベントが含まれます。tarting、SP:Completed、およびSP:StmtCompleted。これらのイベントは、ストアドプロシージャの呼び出しと、プロシージャ内の個々のステートメントの実行を追跡します。

TSQLカテゴリは、SQL:BatchSなどのイベントを使用してアドホッククエリ実行をキャプチャします。tartingとSQL:BatchCompleted。これらのイベントは、直接送信されたクエリを追跡します。 SQL Server ストアド プロシージャの外部。

ロックカテゴリは、Lock:Acquired、Lock:Released、Lock:Deadlock、Lock:Timeout などの同時実行関連イベントを監視します。これらのイベントを使用して、アプリケーションのパフォーマンスに影響を与えるブロッキングやデッドロックの問題を診断できます。

エラーと警告カテゴリは、例外、注意、ユーザーエラーメッセージなどの例外イベントをキャプチャします。これらのイベントは、アプリケーションエラーの特定に役立ちます。 SQL Server トレース セッション中の警告。

4.3.2 シナリオに適したイベントの選択

パフォーマンス監視には、リソース消費量を記録するイベントが必要です。クエリ実行を追跡するには、RPC:Completed と SQL:BatchCompleted を選択します。リソース使用率を測定するには、Duration、CPU、Reads、Writes の各列を追加します。これらのイベントは、パフォーマンスのボトルネックを特定するための基盤となります。

セキュリティ監査には、認証と承認を追跡するイベントが必要です。データベースアクセスを監視するには、「ログイン監査」、「ログアウト監査」、「ログイン失敗監査」、「オブジェクト:オープン」を選択します。誰がどのリソースにアクセスしたかを特定するために、「ログイン名」、「データベース名」、「オブジェクト名」列を追加します。

包括的なイベントキャプチャは、デバッグシナリオのメリットとなります。ストアドプロシージャイベント、SQLバッチイベント、エラーイベントなど、実行フロー全体をトレースできます。SPID、ApplicationName、Hで追加コンテキストをキャプチャできます。ostイベントを特定のセッションに関連付けるには、列に名前を付けます。

4.4 データ列の設定

デフォルトでは、イベントを選択すると、そのイベントのすべてのデータ列が選択(チェック)されます。不要な列の選択を解除することで、オーバーヘッドを削減し、分析を簡素化できます。

「トレース プロパティ」ダイアログでイベントのデータ列を選択/選択解除します。

すべてのトレースの必須列には、イベントの種類を識別するEventClass、実際のSQL文をキャプチャするTextData、実行中のユーザーを識別するLoginName、およびSが含まれます。tarイベント発生時のタイムスタンプを示すtTime。これらの列は、キャプチャされたすべてのイベントの基本的なコンテキストを提供します。

パフォーマンス関連の列は、リソース消費量を測定します。期間はイベントの所要時間をマイクロ秒単位で示します。CPUはプロセッサ時間をミリ秒単位で示します。読み取りは論理ページの読み取り回数をカウントします。書き込みは論理ページの書き込み回数を追跡します。これらの指標は、最適化が必要なリソースを大量に消費する操作を特定します。

セキュリティ列と監査列は、データアクセスパターンを追跡します。DatabaseNameはアクセスされたデータベースを識別します。ObjectNameは関連するテーブルまたはオブジェクトを指定します。ApplicationNameは、アクティビティを開始したアプリケーションを明らかにします。これらの列を組み合わせることで、包括的な監査証跡が提供されます。

4.5 ノイズを低減するためのフィルタの設定

4.5.1 共通フィルタ基準

次の方法を使用してフィルターを構成します。

  1. Video Cloud Studioで トレースプロパティ ダイアログ。
  2. クリック イベントの選択 タブには何も表示されないことに注意してください。
  3. 詳しくはこちら 列フィルター 右下のボタン。
    「トレース プロパティ」ダイアログの「列フィルター」ボタンをクリックします。
  4. 左側のリストから列を選択します。
  5. 右側のパネルでフィルター条件を設定します。
    「トレース プロパティ」ダイアログでデータ列のフィルターを設定します。
  6. 詳しくはこちら OK フィルターを適用します。

アプリケーション名フィルターは、特定のアプリケーションのアクティビティを分離します。フィルターダイアログの「ApplicationName」列を展開し、 いいね フィールド、および SQL Server プロファイラーは、そのアプリケーションからのイベントのみをキャプチャします。このフィルターは、アプリケーション固有の問題のトラブルシューティングに非常に役立ちます。

データベース名フィルターは、キャプチャ対象を特定のデータベースに限定します。データベース名でフィルターすると、システムデータベースのアクティビティが除外され、アプリケーションデータベースに焦点が当てられます。 いいね or 等しい ワイルドカード マッチングが必要かどうかに応じてフィールドを選択します。

期間フィルターは、実行時間の遅い操作のみを捕捉します。 以上 「期間」列の下のフィールド。例えば、「期間」を1000以上に設定すると、1秒以上かかるイベントのみがキャプチャされ、実行時間の短いクエリは除外されます。

ユーザー名フィルターは特定のユーザーアクティビティを追跡します。ログイン名でフィルタリングすることで、特定のデータベースユーザーを監視できます。このアプローチにより、問題のあるクエリを実行したユーザーや機密データにアクセスしたユーザーを特定できます。

4.4.2 フィルタのベストプラクティス

効果的なフィルタリングは、データキャプチャとパフォーマンスへの影響のバランスをとります。過剰なシステムアクティビティのキャプチャを防ぐため、必ず少なくとも1つのフィルタを適用してください。DatabaseNameフィルタとApplicationNameフィルタが推奨されます。tarmのtingポイントost トレース。

実稼働環境では、過度に広範なトレースは避けてください。フィルタリングされていないトレースは膨大な量のデータを取得し、サーバーのパフォーマンスを低下させ、分析を困難にする可能性があります。具体的なフィルタリング基準を設定してください。 tarトラブルシューティングの目的を取得します。

本番環境にデプロイする前にフィルターをテストしてください。まず開発環境またはテスト環境でトレースを実行し、フィルターが過度のオーバーヘッドなしで期待されるイベントをキャプチャすることを確認します。キャプチャされたデータの量に応じてフィルター条件を調整してください。

4.5 トレーステンプレートの操作

4.5.1 組み込みテンプレートの概要

標準テンプレートは、一般的な監視に適したバランスの取れたイベントキャプチャを提供します。一般的なクエリ実行イベント、ストアドプロシージャ呼び出し、基本的なエラー追跡が含まれています。何を確認すればよいか正確にはわからないものの、包括的な可視性が必要な場合は、このテンプレートをご利用ください。

TSQLテンプレートは、イベント選択を最小限に抑え、クエリ実行に特化しています。パフォーマンス分析に不可欠な列を含むSQL:BatchCompletedイベントとRPC:Completedイベントをキャプチャします。このテンプレートは、標準テンプレートよりもオーバーヘッドが低くなっています。

チューニングテンプレートは、データベースエンジンチューニングアドバイザーの分析におけるイベント選択を最適化します。ワークロード分析とインデックスの推奨設定に必要なイベントと列をキャプチャします。自動パフォーマンスチューニング用のトレースを準備する際には、このテンプレートを使用してください。

TSQL_Replay テンプレートには、トレース再生機能に必要なすべてのイベントと列が含まれています。包括的な実行詳細をキャプチャするため、キャプチャしたワークロードをテスト環境で再現できます。このテンプレートは、広範なデータ収集を行うため、生成されるトレースファイルサイズが大きくなります。

4.5.2 カスタムテンプレートの作成

次の手順に従ってカスタム テンプレートを作成します。

  1. 詳しくはこちら File -> テンプレ -> 新しいテンプレート…
  2. わかりやすい名前を入力してください 新しいテンプレート名 フィールド。
  3. オプションでチェック 既存のテンプレートを基に新しいテンプレートを作成する 最初から構築したくない場合は、既存のテンプレートを選択します。
    新しいテンプレートを作成するには SQL Server プロファイラー。
  4. クリック イベントの選択 タブで、希望するイベント、列、フィルターを使用してトレーステンプレートをカスタマイズします。 通常のトレースで.
  5. 詳しくはこちら Save をクリックしてテンプレートを保存します。

チームメンバーと共有したり、バックアップの目的でテンプレートをエクスポートします。

  1. 詳しくはこちら File -> テンプレ -> テンプレートのエクスポート.
  2. エクスポートするテンプレートを選択します。
    トレーステンプレートをエクスポートするには SQL Server プロファイラー。
  3. 希望の保存場所に移動します。
  4. ファイル名を入力してクリック Save.
  5. *.tdfファイルを共有する(SQL Server プロファイラテンプレートファイル)を他の SQL Server プロファイラー ユーザー。

4.6 トレース出力の保存

デフォルトでは、 SQL Server プロファイラーはトレースウィンドウにイベントを表示しますが、保存はしません。トレースデータをファイルまたはテーブルに保存することを選択できます。 トレースプロパティ 新しいトレースを作成するときにダイアログが表示されます。

4.6.1 ファイルに保存

  1. トレースプロパティ ダイアログ、チェック ファイルに保存.
  2. フォルダーアイコンをクリックしてファイルブラウザを開きます。
  3. 希望の保存場所に移動します。
  4. .trc 拡張子のファイル名を入力します。
  5. 詳しくはこちら Save.
  6. 作成セッションプロセスで 最大ファイルサイズを設定する 個々のファイルのサイズを制限します。
  7. 有効にする ファイルロールオーバーを有効にする 複数のファイルを作成します。
  8. オプションで有効にする サーバープロセストレースデータ サーバー側のトレース用。

「トレース プロパティ」ダイアログでトレース データをファイルに保存するように設定します。

ファイルサイズ管理により、ディスク容量の枯渇を防ぎます。使用可能なディスク容量と予想されるトレース期間に基づいて、最大ファイルサイズを500MBや1GBなどの適切な値に設定してください。ファイルロールオーバーにより、サイズ制限に達すると自動的に新しいファイルが作成され、ファイル名に番号が付加されます。

4.6.2 テーブルに保存

  1. トレースプロパティ ダイアログ、チェック テーブルに保存.
  2. その 宛先テーブル ダイアログが表示されます。
    トレース データを保存する宛先テーブルを選択します。
  3. サーバーを以下から選択してください サーバー ドロップダウン。
  4. データベースを選択してください データベース ドロップダウン。
  5. 既存のテーブルを選択するか、新しいテーブル名を入力します。 フィールド。
  6. 詳しくはこちら OK 確認します。
  7. オプション設定 最大行数を設定する テーブルのサイズを制限します。

「トレース プロパティ」ダイアログでトレース データをテーブルに保存するように設定します。

テーブルに保存する場合は、パフォーマンスを考慮する必要があります。テーブルストレージは、ファイルストレージに比べてオーバーヘッドが大きくなるため、 SQL Server トレースデータはストレージエンジンを介して書き込む必要があります。T-SQLを使用してトレースデータを即座にクエリする必要がある場合は、テーブルストレージを使用してください。

テーブルベースのトレースでは、データ保持が重要になります。テーブルが大きくなりすぎないように、最大​​行数制限を設定してください。パフォーマンスを維持するために、古いトレースデータを定期的にアーカイブまたは削除してください。管理性を向上させるために、大規模なトレーステーブルをパーティション分割することを検討してください。

5. 実行と管理 SQL Server 形跡

5.1 Starトレースの記録、一時停止、停止

ツールバー ボタンを使用してトレース実行を管理します。ツールバーボタンでトレースを管理する SQL Server プロファイラー。

  • お気軽にご連絡ください ボタンを押すと、設定に従ってイベントのキャプチャが開始されます。
  • 詳しくはこちら ポーズ テンポにrar接続を失うことなくデータ収集を一時停止します。
  • 詳しくはこちら Force Stop トレースを終了し、接続を閉じます。

メニュー項目経由:
メニュー項目からトレースを管理する SQL Server プロファイラー。

トレース ウィンドウ内の任意のエントリを右クリックします。

右クリックメニュー項目からトレースを管理する SQL Server プロファイラー。

トレースのライフサイクル管理はサーバーリソースに影響を与えます。アクティブなトレースは、キャプチャされたイベントの量に比例してメモリと処理能力を消費します。監視が不要な期間はトレースを一時停止してオーバーヘッドを削減します。分析が完了したら、トレースを完全に停止してリソースを解放します。

クライアント側のトレースにはアクティブなプロファイラ接続が必要です。 SQL Server プロファイラーウィンドウはクライアント側のトレースを直ちに停止します。他のアプリケーションで作業している間もトレースを継続するには、プロファイラーウィンドウを閉じるのではなく最小化してください。

5.2 リアルタイムトレースモニタリング

キャプチャされたイベントは、メインのトレースウィンドウで発生時に監視できます。各行は1つのイベントを表し、列にはイベントのプロパティが表示されます。アクティブなトレース中はグリッドが継続的に更新され、mが表示されます。ost デフォルトでは最近のイベントが下部に表示されます。

リアルタイムトレースモニター SQL Server プロファイラー。

イベントの頻度と特性を観察することで、パターンと問題を特定できます。長時間のイベントはパフォーマンスの問題を示唆し、エラーイベントの頻発はアプリケーションの問題を示唆します。異常なログインアクティビティはセキュリティ上の懸念を示す可能性があります。リアルタイム監視により、新たな問題に即座に対応できます。

キャプチャされたイベントをスクロールして、特定の発生状況を確認できます。任意の行をクリックすると、イベントを選択して詳細情報を表示できます。イベントをダブルクリックすると、すべての列の値を示す詳細なプロパティダイアログが開きます。履歴イベントの確認中に自動スクロールを防止するには、スクロールロック機能を使用してください。

5.3 複数の同時トレースの管理

複数のトレースを同時に実行することで、複雑な監視シナリオにも柔軟に対応できます。データベースアクティビティの異なる側面ごとに個別のトレースを作成できます。例えば、パフォーマンス監視用のトレースとセキュリティ監査用のトレースなどです。各トレースはそれぞれ独自の設定で独立して実行されます。

複数の同時トレースを管理する SQL Server プロファイラー。

複数のトレースを実行する場合、リソースの割り当てが重要になります。アクティブなトレースはそれぞれ、メモリ、CPU、そして場合によってはディスクI/Oを消費します。同時実行トレースの数を制限し、各トレースで適切なフィルターを使用することでオーバーヘッドを最小限に抑えてください。複数のトレースを実行中は、サーバーのパフォーマンスを監視してください。

トレースのタイミングを調整し、オーバーヘッドの高いトレースが重複しないようにします。可能であれば、リソースを大量に消費するトレースはアクティビティの少ない時間帯に実行します。すべてのトレースを同時に実行するのではなく、異なる時間に異なるトレースをスケジュールします。

5.4 クライアント側トレースとサーバー側トレース

デフォルトでは、新しく作成されたトレースはクライアント側のトレースであり、 SQL Server プロファイラはデータベースサーバーに接続します。接続が切断されると、トレースは直ちに停止します。ost またはプロファイラーが閉じられています。

サーバーサイドトレースを作成することもできます。これは、 SQL Server アクティブなプロファイラ接続を必要とせずにインスタンスを終了します。サーバー側のトレースは、閉じた後も実行を継続します。 SQL Server プロファイラーは、指定されたファイルの場所にデータを書き込みます。

サーバー側のトレースを作成するには:

  1. [ファイル] -> [新しいトレース] をクリックします。
  2. トレースプロパティ ダイアログ、チェック ファイルに保存
  3. ファイルの場所やその他の設定を設定します。
  4. 有効にする サーバープロセストレースデータ サーバー側のトレースを作成します。

サーバー側のトレースを作成する SQL Server プロファイラー。

パフォーマンスへの影響はトレースの種類によって大きく異なります。クライアント側のトレースでは、ネットワーク経由でプロファイラーインターフェースにデータを送信する必要があるため、レイテンシと帯域幅の消費が増加します。一方、サーバー側のトレースでは、データがサーバー上のディスクに直接書き込まれるため、オーバーヘッドが少なくなります。

アドホックなトラブルシューティングや迅速な診断のためにクライアント側のトレースを使用するosticセッションや、即時の視覚的なフィードバックが重要な状況に適しています。本番環境の監視、長時間のキャプチャ、無人操作が必要なシナリオには、サーバー側のトレースを選択してください。

6.分析 SQL Server プロファイラーデータ

6.1 保存したトレースを開いて確認する

保存したトレース ファイルを次の手順で読み込みます。

  1. 起動する SQL Server プロファイラー。
  2. 詳しくはこちら File -> 店は開いています -> トレースファイル.
  3. トレース ファイルの場所に移動します。
  4. .trcファイルを選択してクリック 店は開いています.
  5. トレース データがメイン ウィンドウに読み込まれます。

次のプロセスに従ってトレース テーブルをロードします。

  1. 詳しくはこちら File -> 店は開いています -> トレーステーブル.
  2. サーバーに接続しますostトレーステーブルを実行します。
  3. データベースを以下から選択 データベース ドロップダウン。
  4. テーブルを選択してください ドロップダウン。
  5. 詳しくはこちら OK データをロードします。

6.2 トレースデータのフィルタリングと検索

6.2.1 Post-キャプチャフィルタリング

次の手順に従って、読み込まれたトレース データにフィルターを適用します。

  1. 詳しくはこちら 編集 -> もう完成させ、ワークスペースに掲示しましたか? またはプレス Ctrl + Fキー.
  2. 検索テキストを入力してください 見つける フィールド。
  3. 検索する列を 覗く ドロップダウン。
  4. 詳しくはこちら 次を検索 一致するイベントを見つけます。

トレースデータを検索する SQL Server プロファイラー。

列ベースのフィルタリングにより、イベントを再キャプチャすることなく、表示されるデータを絞り込むことができます。任意の列ヘッダーを右クリックし、コンテキストメニューからフィルタリングオプションを選択します。フィルタリング条件を入力すると、一致する行のみが表示されます。このアプローチにより、無関係なイベントが非表示になるため、分析が高速化されます。

6.2.2 特定のイベントの検索

検索機能は、大きなトレースファイル内の特定のイベントを見つけるのに役立ちます。検索ダイアログを使用して、テキスト内容、イベントタイプ、または列の値で検索できます。必要に応じて、正規表現を使用して複雑な検索パターンを作成できます。

分析中にすぐに参照できるよう、重要なイベントをブックマークできます。興味のあるイベントを右クリックし、ブックマークオプションを選択してマークします。キーボードショートカットまたはメニューコマンドを使用してブックマーク間を移動することで、関連するイベントを簡単に比較できます。

6.3 イベントのグループ化と集約

列の値でイベントをグループ化してパターンを特定し、アクティビティを要約します。任意の列ヘッダーを右クリックし、 この列でグループ化 イベントを整理します。グループ化されたビューでは、類似のイベントがまとめて表示されるため、全体的なパターンを把握しやすくなります。

集計ビューは、トレースデータの統計概要を提供します。TextDataでグループ化すると、各クエリの実行回数を確認できます。LoginNameでグループ化すると、ユーザーごとのアクティビティ概要を確認できます。集計により、詳細なイベントリストではすぐには確認できないパターンも明らかになります。

グループを展開したり折りたたんだりして、特定のカテゴリにドリルダウンできます。グループヘッダーの横にあるプラスとマイナスのアイコンをクリックすると、グループ化されたイベントの表示/非表示を切り替えることができます。rar技術的な視点はトップダウン分析を容易にし、tar高レベルのパターンを理解し、詳細に掘り下げます。

6.4 トレースからSQLクエリを抽出する

次の手順に従って、トレース データからクエリを抽出します。

  1. トレース グリッドで目的のクエリを見つけます。
  2. 行をクリックしてイベントを選択します。
  3. 下部のパネルに完全なクエリ テキストが表示されます。
  4. メディア掲載 Ctrlキー+ すべてのクエリテキストを選択します。
  5. メディア掲載 Ctrlキー+ C クエリテキストをコピーします。
  6. さらに分析するには、クエリを Management Studio に貼り付けます。

トレース イベントから SQL クエリを抽出します。

パフォーマンス列で並べ替えることで、問題のあるクエリを特定できます。「実行時間」列のヘッダーをクリックすると、実行時間で並べ替えることができます。並べ替えの方向に応じて、最も遅いクエリが最上位または最下位に表示されます。同様に、CPU、読み取り、書き込みで並べ替えることで、リソースを大量に消費する操作を特定できます。

トレースからクエリウィンドウにクエリをコピーして、テスト用にエクスポートします。抽出したクエリを変更して最適化戦略をテストします。元のバージョンと最適化されたバージョンの間で、実行プランとパフォーマンスメトリックを比較します。

6.5 イベントの相関と実行フローの理解

親子イベント関係は実行時間を表示しますrarチース。SQL:BatchStartingイベント親SQL:StmtStar実行イベントは親プロシージャ実行イベントに関連し、これらの関係を理解することで、コード全体の実行パスをトレースしやすくなります。

トランザクション追跡は、関連するイベントを時間軸で結び付けます。SPID列を使用して、イベントをセッションごとにグループ化します。セッション内では、イベントは時系列順に発生し、操作の順序を示します。このビューでは、トランザクション内でのさまざまな操作の相互作用が明らかになります。

共通列の値を調べることで、イベントの相関関係を分析できます。同一のSPIDを持つイベントは同じセッションで発生しました。同じApplicationNameを持つイベントは同じアプリケーションから発生しました。これらの相関関係を利用して、複雑な実行シナリオを理解しましょう。

7。 一般的 SQL Server プロファイラーの使用例

7.1 パフォーマンスのトラブルシューティング

7.1.1 遅いクエリの特定

次の構成を使用して遅いクエリをキャプチャします。

  1. 新しいトレースを作成するには、 TSQL テンプレート。
  2. イベントの選択 タブ、確認 SQL:バッチ完了 の三脚と RPC:完了 選択されています。
  3. 詳しくはこちら 列フィルター.
  4. 選択する 最大掲載期間 列リストから。
  5. 1000000と入力して 以上 1 秒以上かかるクエリをキャプチャするためのフィールド。
  6. 詳しくはこちら OK とtar痕跡を残さない。
  7. 使用率がピークになる時間帯にトレースを実行します。
  8. トレースを停止し、期間で並べ替えて、最も遅いクエリを特定します。

実行時間に基づく分析により、実行時間のパターンが明らかになります。キャプチャしたイベントを「Duration(実行時間)」列で並べ替えると、最も実行時間の長い操作が最初に表示されます。これらのイベントの「TextData(テキストデータ)」列を調べることで、遅延の原因となっている実際のクエリを特定できます。

CPU負荷の高いクエリとI/O負荷の高いクエリでは、それぞれ異なる最適化アプローチが必要です。CPU列で並べ替えると、アルゴリズムの改善が必要なプロセッサ依存のクエリを特定できます。読み取りまたは書き込み列で並べ替えると、インデックス作成やクエリ書き換えのメリットを享受できるI/O依存のクエリを特定できます。

7.1.2 ブロッキングとデッドロックの検出

次の手順に従ってブロック検出を構成します。

  1. 新しいトレースを作成します。
  2. イベントの選択 タブ、展開 ロック.
  3. 選択する ロック:デッドロック の三脚と ロック:デッドロックチェーン.
  4. 詳細 エラーと警告.
  5. 選択する ブロックされたプロセスレポート.
  6. 列を含める: SPID, テキストデータ, DatabaseName, ログイン名.
  7. Starロック イベントのトレースとモニターを実行します。

ロックイベントのモニタリングは、アプリケーションのパフォーマンスに影響を与える同時実行の問題を明らかにします。ロック:デッドロックイベントは、 SQL Server デッドロック状況を検出し解決しました。ロック:デッドロックチェーンイベントは、デッドロックに関係するプロセスを表示します。

デッドロックグラフは、デッドロックの状況を視覚的に表現します。デッドロックイベントが発生すると、TextData列にデッドロックを説明するXMLが格納されます。このXMLをコピーして、 SQL Server Management Studio では、どのプロセスが相互にブロックされているかを示すグラフィカルなデッドロック ダイアグラムを表示できます。

7.1.3 欠落したインデックスの検出

次の手順に従って、インデックス分析のワークロードを取得します。

  1. 新しいトレースを作成するには、 チューニング テンプレート。
  2. トレースをファイルに保存するように設定します。
  3. 代表的なワークロード期間中にトレースを実行します。
  4. 少なくとも数時間のアクティビティを収集します。
  5. トレースを停止し、ファイルを保存します。
  6. データベース エンジン チューニング アドバイザーを起動します。
  7. ワークロード ソースとしてトレース ファイルを選択します。
  8. 分析を実行してインデックスの推奨事項を受け取ります。

データベースエンジンチューニングアドバイザーとの統合により、インデックスの推奨が自動化されます。チューニングアドバイザーは、取得したワークロードを分析し、パフォーマンス向上につながるインデックスを提案します。実装前に、ストレージのオーバーヘッドとメンテナンスコストを考慮して、推奨事項を慎重に検討してください。osts.

7.2 アプリケーションのトラブルシューティング

7.2.1 アプリケーションエラーのデバッグ

次の構成を使用してアプリケーション エラーを追跡します。

  1. 新しいトレースを作成します。
  2. 詳細 エラーと警告 イベント選択タブで。
  3. 選択する 例外, ユーザーエラーメッセージ, 注意.
  4. 列を含める: エラー, テキストデータ, アプリケーション名, SPID.
  5. 絞り込む アプリケーション名 アプリケーションに集中できます。
  6. Starトレースを実行し、エラー シナリオを再現します。
  7. 診断のためにキャプチャしたエラーイベントを確認するostic 情報。

エラー追跡により、アプリケーションからは見えない例外の詳細が明らかになります。エラー列には、 SQL Server エラー番号。TextData列にはエラーメッセージとエラーの原因となったクエリが表示されます。Severity列にはエラーの重大度レベルが表示されます。

例外監視は、制約違反、権限エラー、タイムアウトイベントなどの実行時の問題を捕捉します。エラーイベントと先行するクエリイベントを相関させることで、例外の発生原因を把握できます。

7.2.2 アプリケーションとデータベース間の通信のトレース

次の手順に従ってアプリケーション アクティビティを監視します。

  1. 新しいトレースを作成するには、 スタンダード テンプレート。
  2. 詳しくはこちら 列フィルター.
  3. 選択する アプリケーション名 アプリケーション名を いいね フィールド。
  4. オプションでフィルタリング Host名前 特定のサーバーを分離します。
  5. Starアプリケーション操作中にトレースを保存します。
  6. キャプチャされたイベントを確認して、すべてのデータベースのやり取りを確認します。

アプリケーション名フィルタリングは、特定のアプリケーションからのクエリを分離します。 SQL Server 接続文字列からアプリケーション名を設定することで、複数アプリケーション環境における個々のアプリケーションの追跡が容易になります。効果的なフィルタリングのために、接続文字列にアプリケーション名パラメータが含まれていることを確認してください。

接続追跡は、ログイン、クエリ実行、ログアウトイベントを含むセッションライフサイクルを表示します。接続作成率を監視して、接続プールの問題を特定します。接続の過剰な変動は、アプリケーション構成に問題がある可能性を示唆しています。

7.2.3 アプリケーションの動作の検証

トレース分析を用いて、想定されるアプリケーションの動作を検証します。ビジネストランザクション中のすべてのデータベース操作をキャプチャし、正しいクエリが適切な順序で実行されていることを確認します。キャプチャされた実際のクエリと想定される動作を比較することで、差異を特定します。

パラメータ検証は、アプリケーションがストアドプロシージャやパラメータ化クエリに正しい値を渡せるようにするためのものです。キャプチャされたクエリテキストを検証し、パラメータ値が期待値と一致していることを確認します。パラメータに誤りがあると、多くの場合、ロジックエラーが発生し、結果として誤ったビジネス結果が発生します。

7.3 セキュリティ監査

7.3.1 ログイン試行の監視

次の手順に従ってログイン監視を構成します。

  1. 新しいトレースを作成します。
  2. 詳細 セキュリティー監査 イベント選択タブで。
  3. 選択する 監査ログイン, 監査ログアウト, 監査ログインに失敗しました.
  4. 列を含める: ログイン名, Host名前, アプリケーション名, Start時間.
  5. Starトレースを使用して認証アクティビティを監視します。
  6. 潜在的なセキュリティ上の問題がないか、失敗したログイン イベントを確認します。

成功および失敗したログインは、包括的な認証追跡を提供します。監査ログインイベントは、ユーザーIDとソース情報を含む成功した認証試行を記録します。監査ログイン失敗イベントは、攻撃または設定の問題を示している可能性のある失敗したログイン試行を示します。

認証追跡により、データベースアクセスのパターンが明らかになります。ログイン頻度を監視して、異常なアクティビティを検出します。複数回のログイン失敗の後に成功した場合、認証情報が侵害されている可能性があります。予期しない場所からのログイン失敗は、調査が必要です。

7.3.2 データアクセスと変更の追跡

次の構成を使用してデータ アクセスを監視します。

  1. 新しいトレースを作成します。
  2. 詳細 セキュリティー監査.
  3. 選択する データベースオブジェクトアクセスの監査.
  4. 列を含める: ObjectName, ログイン名, テキストデータ, DatabaseName.
  5. 絞り込む ObjectName 特定の機密テーブルを監視します。
  6. Starアクセス試行をキャプチャするためのトレースを作成します。

SELECT、INSERT、UPDATE、DELETEの追跡により、包括的なデータ変更監査が可能になります。適切なフィルターを使用してSQL:BatchCompletedイベントをキャプチャし、すべてのデータアクセス操作を監視します。ObjectNameまたはTextDataでフィルタリングすることで、機密性の高いテーブルに焦点を絞ることができます。

機密データへのアクセスは、セキュリティポリシーの遵守を確保するために、綿密な監視が必要です。個人情報、財務データ、その他の機密情報を含むテーブル専用のトレースを作成してください。アクセスパターンを定期的に確認し、不適切なデータアクセスを特定してください。

7.3.3 不正行為の特定

キャプチャされたトレース内のクエリパターンを分析することで、不審なアクティビティを検出します。通常のアプリケーションの動作と一致しない異常なクエリを探します。WHERE句のないSELECT文でテーブル全体を取得する場合、データ窃盗の試みが疑われます。

権限昇格の試みは、権限エラーまたは管理コマンドの実行試行として表示されます。システムテーブルへのアクセス、サーバー構成の変更、または特権アカウントの作成を試みるクエリを監視します。エラーイベントをフィルタリングし、TextData列で不審なアクティビティがないか確認してください。

7.4 キャパシティプランニングとワークロード分析

通常業務における代表的なワークロードをキャプチャすることでベースラインを確立します。典型的な営業時間中にトレースを実行し、標準的なアクティビティパターンを把握します。これらのトレースをパフォーマンスベースラインとして保存し、将来の比較に備えます。

ピーク使用状況の特定により、システムが最大負荷を経験した時間帯を特定できます。営業時間、バッチ処理ウィンドウ、営業時間外のアクティビティなど、さまざまな時間帯のトレースをキャプチャします。イベント数とリソース消費量を分析することで、ピーク時を特定できます。

ワークロード分析からリソース利用パターンが明らかになります。イベントを時間間隔ごとにグループ化することで、1日を通してのアクティビティの分布を把握できます。CPU、ディスクI/O、および継続時間のメトリックを集計し、リソース消費量を定量化します。このデータを使用して、キャパシティのアップグレードを計画したり、最適化の機会を特定したりできます。

8。 高度な SQL Server プロファイラーテクニック

8.1 T-SQLによるサーバー側トレースの作成

8.1.1 sp_trace_createおよび関連プロシージャの使用

T-SQLストアドプロシージャを使用して、プログラム的にサーバーサイドトレースを作成します。このアプローチにより、トレースの作成と管理を自動化でき、 SQL Server プロファイラーのグラフィカル インターフェース。

次のサンプル コードを使用してサーバー側のトレースを定義します。

  1. トレース ID とファイル パスの変数を宣言します。
  2. 新しいトレースを作成するには、sp_trace_create を呼び出します。
  3. イベントと列を追加するには、sp_trace_setevent を使用します。
  4. 必要に応じて、sp_trace_setfilter を使用してフィルターを構成します。
  5. sp_trace_setstatusを呼び出してstar痕跡を残さない。

sp_trace_create プロシージャは、新しいトレース定義を初期化します。出力ファイルのパス、最大ファイルサイズ、およびロールオーバーオプションを指定します。このプロシージャは、後続のプロシージャ呼び出しでトレースを設定するために使用されるトレースIDを返します。

sp_trace_setevent プロシージャを使用してイベントを追加します。キャプチャするイベントと列の組み合わせごとに、トレースID、イベントID、列IDを指定します。このプロシージャを複数回呼び出すことで、完全なトレース設定を構築できます。

sp_trace_setfilter プロシージャを使用してフィルターを設定します。トレースID、列ID、論理演算子、比較演算子、フィルター値を指定します。複数のフィルター呼び出しを組み合わせることで、複雑なフィルター条件を作成できます。

Starステータス値 1 で sp_trace_setstatus を呼び出してトレースを停止します。ステータス値 0 で同じプロシージャを呼び出してトレースを停止します。ステータス値 2 で呼び出してトレース定義を削除します。

8.1.2 サーバーサイドトレースの利点

クライアントのオーバーヘッドが軽減されるため、サーバーサイドトレースは本番環境の監視に最適です。データベースサーバーは、クライアントマシンのリソースを消費することなく、すべてのトレース操作を処理します。クライアントアプリケーションへのイベントの送信にネットワーク帯域幅が消費されることはありません。

自動実行により、無人トレース収集が可能になります。サーバー側のトレースは、クライアント接続が存在しない場合でも作成後も実行を継続します。トレース作成のスケジュール設定は、 SQL Server 自動監視用のエージェント ジョブ。

サーバー側での処理により、パフォーマンスへの影響が低減されます。イベントは追加のシリアル化やネットワーク転送を必要とせず、ディスクに直接書き込まれます。バッファ管理によりディスクI/Oが最適化され、全体的なパフォーマンスが向上します。

8.2 トレース再生機能

8.2.1 再生用のトレースのキャプチャ

次の手順に従って、再生可能なトレースを作成します。

  1. 新しいトレースを作成するには、 TSQL_リプレイ テンプレート。
  2. 必要なすべてのイベントと列が選択されていることを確認します。
  3. トレースをファイルに保存するように設定します。
  4. キャプチャするワークロード期間中にトレースを実行します。
  5. トレースを停止し、ファイルを保存します。

必要なイベントと列により、トレースの完全な再生が保証されます。TSQL_Replay テンプレートには、必要なすべてのイベントタイプとデータ列が含まれています。必要な要素が不足していると再生が正常に行われないため、再生目的でキャプチャする場合は必ずこのテンプレートを使用してください。

8.2.2 トレースの再生

次の手順でキャプチャしたワークロードを再生します。

  1. In SQL Server プロファイラー、クリック File -> 店は開いています -> トレースファイル.
  2. 再生可能なトレース ファイルを選択します。
  3. 詳しくはこちら リプレイ -> お気軽にご連絡ください.
  4. 接続する tar再生ダイアログでサーバーを取得します。
  5. 再生順序やタイミングなどの再生オプションを設定します。
  6. 詳しくはこちら OK 再生を開始します。
  7. ステータス ウィンドウで再生の進行状況を監視します。

リプレイ設定オプションは、 SQL Server プロファイラーはキャプチャされたワークロードを再現します。イベントはキャプチャされた順序で再生され、時間的な関係が維持されます。元のタイミングを維持するか、可能な限り高速にイベントを再生するかを設定します。

8.2.3 トレース再生のユースケース

トレース再生は、現実的なワークロードを再現することで負荷テストのメリットを高めます。本番環境のワークロードトレースをキャプチャし、テストシステムで再生することで、実際の使用パターンにおけるパフォーマンスを検証できます。同時実行設定を調整することで、さまざまな負荷レベルをシミュレートできます。

環境移行の検証により、新しいシステムが既存のワークロードを処理できることが保証されます。現在の本番システムからトレースをキャプチャし、新しいハードウェアまたは更新されたハードウェアで再生します。 SQL Server バージョン。パフォーマンス メトリックを比較して、移行によってパフォーマンスが低下しないことを確認します。

テストシナリオには、コード変更後の回帰テスト、最適化の変更の検証などが含まれます。 SQL Server バージョン、ハードウェア構成のストレステストなど、さまざまなテストに対応しています。Replay は、一貫性と再現性のあるワークロードを提供し、信頼性の高いテストを実現します。

8.3 SQL プロファイラとデータベース エンジン チューニング アドバイザーの統合

適切なイベントのトレースをキャプチャすることで、データベース エンジン チューニング アドバイザー用のワークロード ファイルを作成します。チューニング テンプレートを使用して、分析に必要なすべての情報を確実にキャプチャします。

データベース エンジン チューニング アドバイザーを起動し、ワークロード ソースとしてトレース ファイルを選択します。アドバイザーはキャプチャされたクエリを分析し、パフォーマンスを向上させるインデックス、インデックス付きビュー、またはパーティション分割戦略を推奨します。

パフォーマンス最適化ワークフローは、トレースキャプチャとチューニング分析を統合します。通常運用中の代表的なワークロードをキャプチャし、チューニングアドバイザーで分析し、推奨事項を確認し、開発環境で提案された変更をテストし、最終的に承認された変更を本番環境で実装します。

8.4 トレース収集の自動化

トレースをスケジュールするには SQL Server エージェントジョブを使用して、データを自動的に収集します。sp_trace プロシージャを使用してサーバー側のトレースを定義する T-SQL スクリプトを作成します。これらのスクリプトを特定の時間または間隔で実行するようにスケジュール設定します。

PowerShellの自動化により、高度なトレース管理シナリオが可能になります。トレースの作成、状態の監視、収集されたデータの処理を実行するPowerShellスクリプトを作成できます。タスクスケジューラまたは SQL Server エージェント。

SQL Server エージェントジョブは信頼性の高いスケジュール実行を提供します。tar監視期間の開始時にトレースを開始し、データ収集が完了したらトレースを停止します。ジョブ通知を設定して、管理者に障害を通知します。

8.5 プログラムによるトレースの分析

fn_trace_gettable関数を使用して、T-SQLでトレースファイルを読み取ります。このテーブル値関数はトレースファイルを解析し、イベントデータを結果セットとして返します。このデータを標準のT-SQLでクエリし、カスタム分析を実行します。

カスタム分析スクリプトを使用すると、トレース処理を自動化できます。集計統計を計算したり、パターンを特定したり、異常をフラグ付けしたりするクエリを作成します。これらのスクリプトは、トレース収集が完了した後に自動的に実行されるようにスケジュール設定できます。

テーブルに保存されたトレースデータをクエリすることでレポートを生成します。期間、ユーザー、アプリケーションごとにイベントを集計するビューを作成します。データベースのアクティビティとパフォーマンスに関する定期的な分析情報を提供するレポートソリューションを構築します。

9. SQL Server プロファイラーのベストプラクティス

9.1 パフォーマンスのベストプラクティス

9.1.1 トレースオーバーヘッドの最小化

トレースのオーバーヘッドを削減するには、必要なイベントのみを選択してください。イベントの種類を追加するごとに、トレースエンジンが処理するデータ量が増加します。監視目標を確認し、その目標に直接関連するイベントのみを含めるようにしてください。

フィルターを効果的に使用して、無関係なデータのキャプチャを防ぎます。DatabaseNameでフィルタリングすれば、システムデータベースを除外できます。Durationでフィルタリングすれば、遅いクエリのみをキャプチャできます。ApplicationNameでフィルタリングすれば、特定のアプリケーションに絞り込むことができます。適切なフィルタリングを行うことで、トレースのオーバーヘッドを大幅に削減できます。

サーバー側とクライアント側の考慮事項は、パフォーマンスへの影響に影響します。サーバー側のトレースは、最小限のオーバーヘッドでデータを直接ディスクに書き込みます。クライアント側のトレースは、ネットワーク経由でイベントをプロファイラーインターフェースに送信するため、レイテンシと帯域幅の消費が増加します。本番環境の監視にはサーバー側のトレースを使用してください。

9.1.2 トレースストレージの最適化

ファイルサイズ管理により、ディスク容量の枯渇を防止します。利用可能なストレージ容量に応じて、ファイルサイズの上限を設定します。ファイルのロールオーバーを有効にすると、1つのファイルが無制限に大きくなるのではなく、複数のファイルが作成されます。トレース実行中にディスク容量を監視します。

テーブルストレージとファイルストレージでは、パフォーマンスのトレードオフが異なります。ファイルストレージはストレージエンジンをバイパスするため、トレース実行時のパフォーマンスが向上します。テーブルストレージでは、トレースデータに対するT-SQLクエリを実行できますが、書き込みオーバーヘッドが発生します。分析要件に基づいてストレージタイプを選択してください。

9.2 セキュリティのベストプラクティス

権限管理により、トレースを作成および実行できるユーザーを制御できます。ALTER TRACE権限は、トレース機能を必要とする信頼できるユーザーにのみ付与してください。sysadminロールのメンバーは、トレースへの無制限のアクセス権を持ちます。トレース権限は定期的に確認および監査してください。

機密データを保護するには、トレース設定を慎重に行う必要があります。機密データを扱う際は、クエリテキスト全体をキャプチャすることは避けてください。機密情報を含むトレース出力は、フィルタリングまたは暗号化することを検討してください。トレースファイルは、適切なアクセス制御が確保された安全な場所に保存してください。

トレースファイルセキュリティは、キャプチャされたデータへの不正アクセスを防止します。ファイル権限を設定してトレースファイルへのアクセスを制限してください。トレースファイルに機密情報が含まれている場合は暗号化してください。分析完了後はトレースファイルを削除し、漏洩リスクを最小限に抑えてください。

9.3 本番環境の考慮事項

9.3.1 プロファイラを本番環境で使用する場合

リスク評価はいつ決定するか SQL Server プロファイラは本番環境での使用に適しています。プロファイラは、トレース範囲に応じて増加する測定可能なオーバーヘッドを導入します。診断がostic 値は、実稼働トレースを実行する前にパフォーマンスへの影響を正当化します。

影響を最小限に抑えた構成により、より安全な本番環境のトレースが可能になります。高度に選択的なフィルターを使用して、重要なイベントのみをキャプチャします。期間のしきい値を設定して、実行速度の速いクエリを無視します。トラブルシューティングセッション中は、トレース期間を短時間に制限します。サーバー側のトレースを設定して、クライアントのオーバーヘッドを削減します。

9.3.2 生産監視の代替手段

Extended Eventsは、本番環境の監視にかかるオーバーヘッドを低減します。この最新技術は、従来よりも優れたパフォーマンスと柔軟性を提供します。 SQL Server プロファイラー。長期的な本番環境での使用のために、監視ソリューションを Extended Events に移行します。

クエリストアは、手動でトレースを設定することなく、クエリのパフォーマンスデータを自動的に取得します。運用データベースでクエリストアを有効にすると、クエリ実行の統計情報を経時的に追跡できます。クエリストアは、ost トレースのオーバーヘッドのないパフォーマンス監視機能。

動的管理ビューは、特定のシナリオに適した軽量な監視機能を提供します。DMVは、過去のイベントをキャプチャすることなく、現在の状態情報を提供します。DMVを定期的にクエリすることで、継続的なトレースによるオーバーヘッドなしにサーバーの健全性を監視することができます。

9.4 トレース管理のベストプラクティス

命名規則により、トレースファイルは識別しやすく整理された状態になります。トレースファイル名には、日付、時刻、サーバー名、目的を含めてください。管理と分析を容易にするために、すべてのトレースで一貫した命名パターンを使用してください。

トレースの設定と目的を文書化します。キャプチャしたイベント、トレースを作成した理由、分析から得られた知見を文書化します。コンプライアンスとトラブルシューティングのために、本番システムに対して実行したトレースのログを保持します。

保持ポリシーにより、トレースファイルの過剰な蓄積を防止します。ビジネス要件とストレージ容量に基づいて、トレースファイルの保持期間を定義します。古いトレースファイルを自動削除してディスク容量を解放します。重要なトレースファイルは、削除前に長期ストレージにアーカイブします。

9.5 避けるべきよくある間違い

過剰なトレースはパフォーマンスのオーバーヘッドを増大させ、管理不能なデータ量を生成します。フィルターなしですべてのイベントをキャプチャすることは避けてください。Starトレースの範囲を狭く絞り込み、必要な場合にのみ範囲を拡大してください。トラブルシューティングを効果的に行うには、データが多いほど良いとは限りません。

トレースの停止を忘れると、リソースが浪費され、ディスク容量が圧迫されます。監視が完了したら、必ずトレースを停止してください。トレースの暴走を防ぐため、トレース期間の制限や最大ファイルサイズを設定してください。実行中のトレースを定期的に監視し、非アクティブなトレースや不要なトレースを停止してください。

フィルタの最適化を無視すると、パフォーマンスが低下し、分析が困難になります。効果的なフィルタを設定するために、時間をかけてください。tarトレースを収集します。開発環境でフィルターをテストし、期待どおりにデータが取得されていることを確認します。取得した結果に基づいてフィルターを見直し、改良します。

10. 代替案 SQL Server 2025年のプロファイラー

10.1 拡張イベント:現代の代替

10.1.1 拡張イベントとは何か

拡張イベントは SQL Serverの最新のイベント処理アーキテクチャ。マイクロソフトはこのシステムを特に解決するために設計しました。 SQL Server プロファイラーには、パフォーマンスのオーバーヘッドや構成の柔軟性といった制限があります。拡張イベントは、リソース消費を大幅に削減しながら包括的な監視機能を提供します。

拡張イベントは、アーキテクチャと利点において従来のトレース技術と異なります。イベントエンジンは、 SQL Serverのコアアーキテクチャを採用し、最小限のオーバーヘッドでイベントをキャプチャします。非同期イベントバッファリングにより、監視によるデータベース操作のブロックを回避します。柔軟性 tar取得オプションにより、多様な出力構成が可能になります。

パフォーマンス上の利点は、Extended Events が本番環境の監視に最適です。ベンチマークでは、Extended Events は同等のイベントよりもオーバーヘッドを 50~90% 削減することが示されています。 SQL Server プロファイラートレース。このアーキテクチャは、イベント量の増加に合わせて拡張性が向上し、より多くの同時監視セッションをサポートします。

10.1.2 プロファイラから拡張イベントへの移行

イベントマッピングは SQL Server プロファイラーイベントを拡張イベントに相当します。Most プロファイラーイベントには、対応する拡張イベントがあります。Microsoft は、2 つのシステム間で共通するイベントをマッピングしたドキュメントを提供しています。

拡張イベントでセッションを作成するには、新しい構文と概念を習得する必要があります。イベントセッションは、T-SQL CREATE EVENT SESSION ステートメント、または Management Studio の拡張イベント グラフィカル インターフェイスを使用して定義します。セッションでは、キャプチャするイベント、収集するデータ、結果の保存場所を指定します。

10.1.3 拡張イベントツールとインターフェース

SSMS 拡張イベント UI は、グラフィカルなセッション管理を提供します。オブジェクト エクスプローラーの「管理」フォルダーから拡張イベントにアクセスできます。このインターフェイスを使用して、イベント セッションを作成、変更、監視できます。キャプチャしたデータは、グリッドやグラフなどのグラフィカルな形式で表示できます。

T-SQLセッション管理により、プログラムによる拡張イベントの制御が可能になります。CREATE EVENT SESSIONステートメントを記述して、コード内でセッションを定義します。実行中のセッションを変更するには、ALTER EVENT SESSIONを使用します。セッションを削除するには、DROP EVENT SESSIONを使用します。このアプローチにより、自動監視ソリューションが容易になります。

10.2 SQL Server クエリストア

クエリストアは、有効になっているデータベースのクエリパフォーマンスデータを自動的にキャプチャします。この機能は、手動でトレースを設定することなく、クエリプラン、実行統計、パフォーマンスメトリックを経時的に追跡します。クエリストアは履歴データを保持し、傾向分析と回帰検出を可能にします。

クエリストアを介したリアルタイムのクエリパフォーマンス監視により、現在のシステム動作を把握できます。最近実行されたクエリ、その実行プラン、リソース消費量を確認できます。実行時間の増加や実行プランの変化が見られるクエリを特定し、問題発生の可能性を示唆します。

履歴クエリ分析により、期間をまたいだ比較が可能になります。クエリストアは、設定可能な保持期間にわたってパフォーマンスデータを保持します。現在のパフォーマンスと過去のベースラインを比較することで、パフォーマンスの低下を特定できます。パフォーマンスの傾向を分析し、将来の容量ニーズを予測できます。

自動で常時稼働するパフォーマンス監視が必要な場合は、クエリストアをご利用ください。運用データベースでクエリストアを有効にすると、クエリの動作を継続的に追跡できます。クエリストアは、パフォーマンスの問題に関する履歴コンテキストを提供することで、トレースベースのトラブルシューティングを補完します。

10.3 動的管理ビュー(DMV)

DMVによる軽量監視は、過去のイベントをキャプチャすることなく、現在の状態情報を提供します。DMVは内部を公開します。 SQL Server クエリ可能なビューを通じて統計情報とメタデータを取得します。標準のT-SQL SELECTステートメントを使用してDMVをクエリします。

パフォーマンス監視によく使用されるDMVクエリには、クエリパフォーマンス統計用のsys.dm_exec_query_stats、現在実行中のリクエスト用のsys.dm_exec_requests、待機統計用のsys.dm_os_wait_statsなどがあります。これらのビューは、サーバーの健全性とアクティビティに関する特定の時点の洞察を提供します。

DMVはリアルタイムのメトリクスを提供することで、トレースベースの監視を補完します。DMVは、迅速なヘルスチェックと現在の状態分析に使用できます。DMVクエリとトレースデータを組み合わせることで、包括的なトラブルシューティングアプローチを実現できます。

10.4 サードパーティの監視ツール

市販の代替品は、強化された監視機能を提供します。 SQL Serverの組み込みツール。SolarWinds、Redgate、Questなどのベンダーの製品は、包括的な監視、アラート、分析機能を提供します。これらのツールは、トレース、DMV、パフォーマンスカウンターなど、複数のデータソースを組み合わせることがよくあります。

機能比較により、さまざまな監視アプローチの強みが明らかになります。サードパーティ製ツールは、優れたユーザーインターフェース、自動アラート、履歴トレンド分析を提供します。 SQL Serverの組み込みツールは追加のcを提供しませんost より深い統合を実現します。具体的な要件と予算に基づいてツールを評価してください。

10.5 ニーズに合った適切なツールの選択

意思決定マトリックスは適切な監視ツールの選択に役立ちます。アドホックなトラブルシューティングには、 SQL Server プロファイラーはアクセスしやすく、効果的です。本番環境の監視には、拡張イベントまたはクエリストアの方がパフォーマンスが向上します。包括的なエンタープライズ監視には、サードパーティのソリューションがmを提供します。ost 機能。

ツールの選択基準には、パフォーマンスのオーバーヘッド、使いやすさ、データ保持要件、予算の制約などがあります。ツールを選択する際には、チームの専門知識を考慮してください。新しいツールの方が優れた機能を備えている場合でも、使い慣れたツールを使用することで、トラブルシューティングを迅速に行うことができます。

複数のツールを組み合わせて、包括的な監視戦略を実現します。継続的なパフォーマンス追跡にはクエリストア、特定の問題の調査には拡張イベント、リアルタイムのヘルスチェックにはDMVを使用します。この階層化されたアプローチにより、過剰なオーバーヘッドを発生させることなく、堅牢な監視を実現します。

11。 トラブルシューティング SQL Server プロファイラーの問題

11.1 一般的な接続の問題

認証に失敗すると SQL Server プロファイラーが接続できない tarサーバーを取得します。選択した認証方法に正しい資格情報を使用していることを確認してください。Windows認証では、Windowsアカウントに適切な資格情報が必要です。 SQL Server パーミッション。 SQL Server 認証には有効な SQL ログイン資格情報が必要です。

ネットワーク接続の問題は、タイムアウトエラーや接続失敗として現れます。 SQL Server 設定でリモート接続が許可されています。ファイアウォールの設定を確認し、 SQL Serverのポート。プロファイラ固有の問題をトラブルシューティングする前に、ping と telnet を使用して基本的な接続をテストしてください。

11.2 プロファイラのパフォーマンスの問題

トレース実行が遅い場合は、トレース設定によるオーバーヘッドが大きすぎることを示しています。選択したイベントを確認し、不要なイベントを削除してください。フィルターを追加して、キャプチャされるイベントの量を減らしてください。クライアント側の処理負荷を軽減するために、サーバー側のトレースの使用を検討してください。

高い資源消費は両方に影響を及ぼします SQL Server プロファイラクライアント。トレース実行中はサーバーのCPUとメモリを監視します。サーバーリソースが制限されている場合は、フィルターの選択性を高めるか、キャプチャ時間を短縮してください。クライアントリソースに問題が発生した場合は、他のアプリケーションを終了するか、クライアントハードウェアをアップグレードする必要があります。

11.3 トレースファイルとテーブルの問題

トレースファイルが破損しているため開けない SQL Server プロファイラ。破損は通常、トレースの異常終了やディスクエラーによって発生します。ファイルをテキストエディタで開いて、完全に破損していないことを確認してください。fn_trace_gettable を使用してテーブルにインポートすることで、部分的なデータを復元できる場合があります。

トレースをロードしようとするとテーブルアクセスの問題が発生する SQL Server テーブル。トレーステーブルに対するSELECT権限があることを確認してください。テーブルが削除または名前変更されていないことを確認してください。トレーステーブルを含む正しいサーバーとデータベースに接続していることを確認してください。

11.4 欠落したイベントまたは不完全なデータ

フィルタの設定ミスにより、トレースで期待されるイベントが見逃される可能性があります。フィルタ条件をよく見直し、必要なイベントが除外されていないことを確認してください。短いトレースを実行し、キャプチャされたデータが期待どおりであることを確認し、フィルタをテストしてください。フィルタを削除するrarそれが問題の原因であるかどうかを判断する必要があります。

バッファオーバーフローは次のような場合に発生します SQL Server イベント生成に追いつくだけの速度でトレースデータを書き込めません。これは通常、アクティビティが集中しているときにフィルタリングされていないトレースで発生します。症状としては、イベントの欠落や「イベントがキャプチャされませんでした」という警告が表示されます。フィルターを追加してイベントの量を減らすか、トレースファイルの場所のディスクI/Oパフォーマンスを向上させることで解決できます。

11.5 プロファイラのクラッシュとエラー

よくあるエラーメッセージには、「トレースを作成できません」などがあります。これは、権限の問題またはリソースの制約を示しています。「トレースが停止されました」というメッセージは、ディスク容量不足などによりサーバー側のトレースが失敗したことを示しています。「トレース定義が無効です」というエラーは、設定に問題があることを示しています。

解決方法はエラーの種類によって異なります。権限エラーの場合は、ユーザーにALTER TRACE権限を付与する必要があります。リソースエラーの場合は、ディスク領域またはメモリを解放する必要があります。設定エラーの場合は、トレース設定を確認して修正する必要があります。tart SQL Server プロファイラーが応答しなくなった場合。

12。 実用的 SQL Server プロファイラーのシナリオと例

12.1 シナリオ1: データベース内で最も遅いクエリを特定する

このチュートリアルでは、遅いクエリをキャプチャして分析する方法を説明します。

次の手順に従ってトレースを構成します。

  1. 起動する SQL Server プロファイラーに接続して tarサーバーを取得します。
  2. 詳しくはこちら File -> 新しい痕跡.
  3. 「スロークエリ分析」と入力して トレース名 フィールド。
  4. 選択する TSQL テンプレートを使用する ドロップダウン。
  5. 詳しくはこちら イベントの選択 タブには何も表示されないことに注意してください。
  6. 詳しくはこちら 列フィルター.
  7. 選択する 最大掲載期間 1000000と入力して 以上.
  8. 選択する DatabaseName データベース名を入力してください いいね.
  9. 詳しくはこちら OK フィルターを閉じます。
  10. 有効にする ファイルに保存 ファイルパスを指定します。
  11. 詳しくはこちら ラン その後、Ptarキャプチャしません。

代表的なワークロードを捕捉するため、ピーク時の営業時間中に少なくとも30分間トレースを実行します。十分なデータが収集されたら、トレースを停止します。

次のプロセスに従って結果を分析します。

  1. クリック 最大掲載期間 実行時間で並べ替えるための列ヘッダー。
  2. 実行時間が最も長いクエリの上位 10 件を特定します。
  3. 各クエリについて、 テキストデータ コラム。
  4. クエリ テキストをコピーして Management Studio に貼り付けます。
  5.   推定実行プランの表示 クエリを分析します。
  6. テーブルスキャン、欠落したインデックス、または非効率的な結合を探します。
  7. レビュー CPU, 読み込み, 書き込み リソース消費パターンの列。

12.2 シナリオ2: デッドロック問題のデバッグ

この例では、デッドロックをキャプチャして分析する方法を示します。

次の手順に従ってデッドロック監視を構成します。

  1. 「デッドロック調査」という名前の新しいトレースを作成します。
  2. 詳しくはこちら イベントの選択 タブには何も表示されないことに注意してください。
  3. 詳しくはこちら すべてのイベントを表示.
  4. 詳細 ロック カテゴリ。
  5. 選択する ロック:デッドロック.
  6. 選択する ロック:デッドロックチェーン.
  7. 詳細 エラーと警告 カテゴリ。
  8. 選択する ブロックされたプロセスレポート.
  9. 確保 テキストデータ 列が選択されます。
  10. 詳しくはこちら ラン その後、Ptar監視。

トレース実行中にデッドロックが発生すると、トレース グリッドに Lock:Deadlock イベントが表示されます。

次の手順に従ってデッドロック情報を解釈します。

  1. クリック ロック:デッドロック イベント行。
  2. このプロジェクトやその他の助成金受贈者に関する テキストデータ 下のパネルの列。
  3. TextData から XML コンテンツをコピーします。
  4. Management Studio を開き、新しいクエリ ウィンドウを作成します。
  5. XML をクエリ ウィンドウに貼り付けます。
  6. ファイルを .xdl 拡張子で保存します。
  7. Management Studio で .xdl ファイルを開き、デッドロック グラフを表示します。
  8. グラフには、関連するプロセス、ロックされたリソース、選択された被害者が表示されます。
  9. 両方のプロセスからのクエリを確認して競合を理解します。

解決手順には通常、一貫した順序でリソースにアクセスするためにアプリケーション コード内の操作を並べ替えること、トランザクション スコープを縮小すること、または適切なロック ヒントを実装することが含まれます。

12.3 シナリオ3: 特定のアプリケーションからのすべてのクエリの追跡

このシナリオでは、アプリケーション固有のクエリ監視について説明します。

次の手順に従って、アプリケーション固有のトレースを構成します。

  1. 「アプリケーション クエリ トラッキング」という名前の新しいトレースを作成します。
  2. まず スタンダード テンプレート。
  3. 詳しくはこちら イベントの選択 タブには何も表示されないことに注意してください。
  4. 詳しくはこちら 列フィルター.
  5. 選択する アプリケーション名.
  6. アプリケーション名を入力してください いいね フィールド。
  7. アプリケーションで接続プールを使用する場合は、ワイルドカード マッチングが必要になることがあります。
  8. 詳しくはこちら OK フィルターを適用します。
  9. 有効にする テーブルに保存 クエリを簡単に実行できます。
  10. 詳しくはこちら ラン その後、Ptarキャプチャしません。

クエリパターン分析により、アプリケーションがどのように相互作用するかがわかります。 SQL Server:

  1. データを収集した後、トレースを停止します。
  2. Management Studio を開き、トレース テーブルがあるサーバーに接続します。
  3. トレース テーブルをクエリしてパターンを分析します。
  4. 操作の組み合わせを確認するには、クエリをタイプ別にカウントします。
  5. mを識別するost 頻繁に実行されるクエリ。
  6. キャッシュまたは最適化できるクエリを探します。
  7. 接続プールが欠落していることを示す、同一のクエリが繰り返し実行されていないか確認します。

12.4 シナリオ4: コンプライアンスのためのデータアクセスの監査

この例では、セキュリティ監査証跡の作成を示します。

次の手順に従ってセキュリティ監査を構成します。

  1. 「セキュリティ監査証跡」という名前の新しいトレースを作成します。
  2. 詳しくはこちら イベントの選択 タブには何も表示されないことに注意してください。
  3. 詳しくはこちら すべてのイベントを表示.
  4. 詳細 セキュリティー監査 カテゴリ。
  5. 選択する 監査ログイン, 監査ログアウト, 監査ログインに失敗しました.
  6. 選択する データベースオブジェクトアクセスの監査.
  7. 詳細 TSQL カテゴリ。
  8. 選択する SQL:バッチ完了.
  9. 詳しくはこちら 列フィルター.
  10. 絞り込む ObjectName 特定の機密テーブルを監視します。
  11. 有効にする テーブルに保存 長期保存用。
  12. 無人操作のサーバー側トレースを有効にします。
  13. 詳しくはこちら ラン その後、Ptar監査はありません。

トレース テーブルをクエリして監査レポートを生成します。

  1. ユーザーおよび期間別にアクセスを要約するクエリを作成します。
  2. 異常なアクセス パターンや営業時間外のアクティビティを識別します。
  3. セキュリティレビューのために失敗したログイン試行を文書化します。
  4. コンプライアンス文書化のために監査データをレポート システムにエクスポートします。
  5. 保持ポリシーに従って、完了した監査トレースをアーカイブします。

12.5 シナリオ5: パフォーマンステストのためのワークロードのキャプチャ

このシナリオでは、テスト目的でのワークロードのキャプチャを示します。

次の手順に従って、再生可能なトレースを作成します。

  1. 「ワークロード キャプチャ」という名前の新しいトレースを作成します。
  2. 選択する TSQL_リプレイ テンプレートのドロップダウンから選択します。
  3. このテンプレートには、再生に必要なすべてのイベントと列が含まれています。
  4. 詳しくはこちら イベントの選択 タブには何も表示されないことに注意してください。
  5. 特定のワークロード セグメントをキャプチャする場合は、フィルターを適用します。
  6. 有効にする ファイルに保存.
  7. 十分なディスク容量のあるファイル パスを指定します。
  8. 適切なファイル サイズ制限を設定し、ロールオーバーを有効にします。
  9. 詳しくはこちら ラン その後、Ptarキャプチャしません。

代表的な業務オペレーション中にキャプチャします。包括的なワークロードをキャプチャするには、さまざまなアクティビティパターンをカバーするトレースを数時間実行します。十分なデータが収集されたら、トレースを停止します。

ワークロード分析により、システムの動作パターンが明らかになります。

  1. キャプチャしたトレースファイルを開く SQL Server プロファイラー。
  2. イベントの分布を種類別および時間別に確認します。
  3. 総リソース消費メトリックを計算します。
  4. アクティビティのピーク期間とリソースのボトルネックを特定します。
  5. データベース エンジン チューニング アドバイザーの分析にトレースを使用します。
  6. 変更を検証するには、テスト システムに対してトレースを再生します。

13. データベース破損検出 SQL Server プロファイラー

13.1使用 SQL Server 腐敗の早期警告サインをプロファイラーで検出

データベースの破損は、ost データの完全性とシステムの信頼性に対する深刻な脅威です。 SQL Server Profiler は専用の破損検出ツールではありませんが、即時の調査が必要な潜在的な破損の問題を示す重大な警告サインをキャプチャできます。

13.2 潜在的な破損を示す重大なエラーイベント

  • 重大度 24 エラー (823、824、825): ハードウェアおよびメディアの障害。
  • エラー 605: ページの取得に失敗しました
  • エラー 8928 および 8929: オブジェクトの破損

13.3 疑わしいデータベースの動作と警告パターン

  • 特定のオブジェクトに対する繰り返しクエリのタイムアウト
  • アクセス違反とアプリケーションのクラッシュ
  • 異常なエラークラスタリング

13.4 プロファイラの検出結果に基づいて DBCC CHECKDB を実行する

If SQL Server プロファイラが疑わしい破損を発見した場合、DBCC CHECKDBを使用してデータベースの完全なチェックを実行できます。破損が確認された場合は修復を実行してください。 これらのタスクを実行するための包括的なガイド.

DBCC CHECKDBでデータベースの修復に失敗した場合、破損は深刻です。このような場合は、 サードパーティのSQL回復ツール.

14.よくある質問

Q:です SQL Server プロファイラは引き続きサポートされています SQL Server 2022?

A:はい。 SQL Server プロファイラーは引き続き含まれています SQL Server 2022本、そして SQL Server Management Studioは、廃止されたにもかかわらず、 SQL Server 2016年。Microsoftは引き続きこのツールを現在のバージョンで提供していますが、新しい監視実装にはExtended Eventsへの移行を推奨しています。このツールは引き続き機能し、トラブルシューティングやアドホック分析に広く使用されています。

Q:違いは何ですか SQL Server プロファイラーと SQL トレース?

A: SQL Server プロファイラは、内部で実行されているSQLトレースエンジンに接続するグラフィカルユーザーインターフェースツールです。 SQL ServerSQLトレースは、実際にイベントをキャプチャする基盤となるテクノロジーです。トレースは、プロファイラーのインターフェースを使用するか、sp_trace_createなどのT-SQLストアドプロシージャを介して直接作成できます。プロファイラーは設定が簡単で、T-SQLトレースはより多くの自動化の可能性を提供します。

Q: パフォーマンスオーバーヘッドはどのくらいですか? SQL Server プロファイラーを追加しますか?

A: パフォーマンスへの影響はトレースの設定によって異なります。適切にフィルタリングされたトレースで特定のイベントのみをキャプチャすると、1~5%のオーバーヘッドが発生する可能性があります。フィルタリングなしで適切に設定されていないトレースでは、特に負荷の高いシステムでは20~50%以上のオーバーヘッドが発生する可能性があります。サーバー側のトレースはクライアント側のトレースよりもパフォーマンスへの影響は小さくなります。イベント量を最小限に抑えるために必ずフィルターを使用し、まずは非本番環境でトレースをテストしてください。

Q: 走ってもいいですか? SQL Server プロファイラーは本番サーバー上にありますか?

A: 走れます SQL Server プロファイラーは本番サーバーでも使用できますが、注意が必要です。影響を最小限に抑えるため、選択性の高いフィルターを使用し、トレース期間を制限し、サーバー側のトレースを優先してください。本番サーバートレースは、可能な限りアクティビティの少ない時間帯に実行してください。継続的な本番サーバー監視には、オーバーヘッドの少ない拡張イベントまたはクエリストアの使用をご検討ください。

Q: 使用するにはどのような権限が必要ですか? SQL Server プロファイラー?

A: トレースの作成と実行には、ALTER TRACE 権限が必要です。sysadmin 固定サーバーロールのメンバーには、この権限が自動的に付与されます。sysadmin 以外のユーザーには、ALTER TRACE 権限を明示的に付与してください。さらに、設定に応じて、トレースデータをファイルまたはテーブルに保存するための適切な権限も必要です。

Q: トレース内のすべてのイベントが表示されないのはなぜですか?

A: イベントが欠落する原因として、一般的にはフィルターの制限が厳しすぎるか、バッファオーバーフローが考えられます。フィルターの設定を確認し、必要なイベントが除外されていないことを確認してください。バッファオーバーフローは、次のような場合に発生します。 SQL Server 通常、高負荷のシステムでは、フィルタリングされていないトレースではイベントの書き込み速度が十分ではありません。フィルタを追加してイベントの量を減らすか、ディスクI/Oパフォーマンスを向上させてください。イベントがキャプチャされなかったことを示すエラーメッセージを確認してください。

Q: デッドロック情報を取得するにはどうすればいいですか? SQL Server プロファイラー?

A: LocksカテゴリのLock:DeadlockイベントとLock:Deadlock Chainイベントを含むトレースを作成してください。デッドロックグラフのXMLが含まれているため、TextData列が選択されていることを確認してください。デッドロックが発生したら、TextData列からXMLをコピーし、.xdl拡張子で保存して、 SQL Server グラフィカルなデッドロック図を表示するには、Management Studio を使用します。

Q: トレースをファイルに保存する場合とテーブルに保存する場合の違いは何ですか?

A: ファイルは、トレース実行時にバイパスされるため、パフォーマンスが向上します。 SQL Server ストレージエンジン。ファイルトレースは、最小限のオーバーヘッドでデータを直接ディスクに書き込みます。テーブルトレースはストレージエンジンを介して書き込みを行うため、オーバーヘッドは増加しますが、トレースデータに対して即座にT-SQLクエリを実行できます。パフォーマンスが重視されるシナリオではファイルを使用し、キャプチャ中またはキャプチャ直後にデータをクエリする必要がある場合はテーブルを使用します。

Q:自動化できますか SQL Server プロファイラー トレース収集?

A: はい、T-SQLストアドプロシージャで作成されたサーバーサイドトレースを使用してトレース収集を自動化できます。sp_trace_createと関連プロシージャを使用してスクリプトを作成し、スケジュールを設定してください。 SQL Server エージェントジョブ。このアプローチにより、指定されたスケジュールで無人トレース収集が可能になります。PowerShellスクリプトは、より複雑なシナリオに対応する別の自動化オプションを提供します。

Q: トレースはどのくらいの時間実行する必要がありますか?

A: トレースの所要時間は目的によって異なります。特定の問題のトラブルシューティングを行う場合は、問題を再現しながらトレースを実行します。通常は5~30分です。パフォーマンス分析を行う場合は、アクティビティのピーク時に少なくとも1時間分のトレースを収集してください。ワークロード分析やキャパシティプランニングを行う場合は、異なる時間帯にまたがって数時間分のトレースを収集してください。監視が完了したら、必ずトレースを停止してリソースを解放してください。

Q: トレース ファイルが大きくなりすぎた場合はどうすればよいでしょうか?

A: トレースプロパティでファイルロールオーバーを有効にすると、1つの大きなファイルではなく、複数の小さなファイルが作成されます。ディスク容量と分析のニーズに合わせて、ファイルの最大サイズを設定してください。フィルターを使用して、キャプチャされたイベントの量を減らしてください。大きなトレースの場合は、トレース全体を一度に読み込むのではなく、データをセグメントごとに分析することを検討してください。ディスク容量を管理するために、古いトレースファイルを定期的にアーカイブまたは削除してください。

Q: CPU 使用率が高くなる原因となっているクエリを見つけるにはどうすればよいですか?

A: SQL:BatchCompletedイベントとRPC:Completedイベントを含むトレースを作成します。CPU、Duration、TextData列を含めます。Durationでフィルタリングし、1000ミリ秒などのしきい値を超えたクエリのみをキャプチャします。データを収集したら、CPU列で降順で並べ替えます。上位のクエリは、mを消費します。ost プロセッサ時間。これらのクエリを調べて、インデックスの欠落や非効率的なロジックなどの最適化の余地がないか確認します。

Q:できます SQL Server プロファイラーはクエリ実行プランをキャプチャしますか?

A: SQL Server プロファイラは、パフォーマンスカテゴリのShowplan XMLイベントを通じて実行プラン情報を取得できます。完全な実行プランを取得するには、Showplan XMLまたはShowplan XML統計プロファイルイベントを選択してください。TextData列にはXMLプランデータが含まれます。ただし、日常的な実行プラン分析では、 SQL Server Management Studio のグラフィカル実行プラン機能またはクエリ ストアを使用すると、より簡単な代替手段が提供されます。

Q: sに最適なテンプレートは何ですか?tar一般的な監視に使用しますか?

A: 標準テンプレートは、tar一般的な監視に最適なツールです。一般的なクエリ実行イベント、ストアドプロシージャ呼び出し、バランスの取れたオーバーヘッドによるエラー追跡が含まれます。クエリパフォーマンスに重点を置いた、影響の少ない監視には、TSQLテンプレートをご利用ください。基本を理解した上で、フィルターを追加したりイベントの選択を調整したりすることで、特定のニーズに合わせてテンプレートをカスタマイズできます。

Q: 特定のアプリケーションまたはユーザーのみをトレースするにはどうすればよいですか?

A: 特定のアプリケーションまたはユーザーを分離するには、列フィルターを使用します。アプリケーションの場合は、接続文字列で指定された名前を使用してApplicationName列でフィルターします。ユーザーの場合は、LoginName列でフィルターします。 SQL Server ログイン名またはWindowsアカウント名。複数のフィルターを組み合わせてさらに絞り込むことができます。例えば、特定のデータベースにおける1つのアプリケーションのアクティビティを監視するには、ApplicationNameとDatabaseNameの両方でフィルター処理します。

15. 結論と次のステップ

15.1の重要なポイント

SQL Server プロファイラーは非推奨となっているにもかかわらず、アドホックなデータベーストラブルシューティングに有用なツールであり続けています。分かりやすいインターフェースと包括的なイベントキャプチャにより、迅速な診断に最適です。ostすぐに結果が必要な場合は、icセッションをご利用ください。プロファイラーは、特定の問題のトラブルシューティング、アプリケーションの動作分析、セキュリティ監査に使用できます。

ベストプラクティスとしては、パフォーマンスへの影響を最小限に抑えるためにフィルターを積極的に使用すること、本番環境ではサーバーサイドのトレースを優先すること、トレース期間を必要な期間に限定することなどが挙げられます。オーバーヘッドを削減するために、必要なイベントと列のみを選択してください。キャプチャ時のパフォーマンスを向上させるため、トレースをテーブルではなくファイルに保存してください。

15.2 前進: 最新ツールの活用

からの移行 SQL Server 長期的な監視ソリューションのために、ProfilerからExtended Eventsに移行しましょう。Profilerは引き続き機能しますが、Extended Eventsの学習に時間を費やすことで、将来的なニーズにも対応できるようになります。 SQL Server バージョン。Star一般的なプロファイラー トレースを複製するシンプルな拡張イベント セッションを使用します。

運用データベースでクエリストアを有効にすると、手動でトレースを設定することなく、自動パフォーマンス監視が可能になります。クエリストアはクエリプランと実行統計を継続的に取得し、パフォーマンス分析のためのベースラインデータを提供します。クエリストアと tar包括的な監視のために、拡張イベント セッションを取得しました。

15.3 追加リソース

以下のリソースは、 SQL Server プロファイラーの知識と監視のベストプラクティスを常に把握する:

公式 Microsoft ドキュメント

コミュニティ

  • SQL Server Central – データベース専門家向けの記事、フォーラム、スクリプト
  • スタックオーバーフロー SQL Server タグ – 特定のトラブルシューティングに関する質問のためのコミュニティQ&A
  • Reddit r/SQLServer – ディスカッションフォーラム SQL Server トピックとアドバイス
  • SQLServerCentral.com フォーラム – プロファイリングとパフォーマンスに関する活発なコミュニティディスカッション
  • MSDN SQL Server フォーラム – Microsoft-hostedコミュニティサポートフォーラム

ブログと技術記事

  • SQL Server パフォーマンスモニタ – 専用のパフォーマンス監視および最適化コンテンツ
  • Brent Ozar Unlimited ブログ – パフォーマンスチューニングとモニタリングのベストプラクティス
  • SQLSkills.com – エキスパートレベル SQL Server 業界リーダーによるコンテンツ
  • Microsoft SQL Server ブログ – 公式製品アップデートと機能発表
  • シンプルトーク – 実用的 SQL Server チュートリアルとケーススタディ

トレーニングと認定

  • マイクロソフト ラーニング – 無料のオンライントレーニングモジュール SQL Server
  • Microsoft 認定: Azure データベース管理者アソシエイト – 公式認定パス
  • Pluralsight SQL Server コース – プロファイリングとパフォーマンスチューニングに関するビデオトレーニング
  • LinkedInの学習 SQL Server トレーニング – 専門能力開発コース
  • Udemy SQL Server パフォーマンスコース – 実践的なハンズオントレーニングオプション

  • SQL Server クエリパフォーマンスチューニング – 包括的なパフォーマンス最適化ガイド
  • Pro SQL Server 内部 – 深掘り SQL Server 建築
  • SQL Server 実行プラン – クエリの最適化を理解する
  • エキスパートパフォーマンスインデックス SQL Server – インデックスの設計と最適化
  • SQL Server 高度なトラブルシューティングとパフォーマンスチューニング – 高度な診断osticテクニック

ツールとユーティリティ

  • SQL Server 管理スタジオ – 主なインターフェース SQL Server プロファイラー
  • Azure データ スタジオ – 最新のクロスプラットフォームデータベースツール
  • sp_WhoIsActive – コミュニティで作成された人気の監視ストアドプロシージャ
  • SQL Sentry Plan Explorer – 無料の実行計画分析ツール
  • DBForge Studio – サードパーティ SQL Server 開発および管理ツール

著者について

袁勝 10年以上の経験を持つ上級データベース管理者(DBA)です。 SQL Server 環境およびエンタープライズデータベース管理に精通しており、金融サービス、医療、製造業など、様々な組織において数百件のデータベース復旧シナリオを解決してきました。

ユアンの専門は SQL Server データベースの復旧、 高可用性ソリューション、パフォーマンスの最適化など、幅広い実務経験を有しています。彼の豊富な実務経験には、マルチテラバイトデータベースの管理、 Always On 可用性グループ、ミッションクリティカルなビジネス システム向けの自動バックアップおよびリカバリ戦略を開発します。

Yuanは、技術的な専門知識と実践的なアプローチを通じて、データベース管理者やITプロフェッショナルが複雑な問題を解決するのに役立つ包括的なガイドの作成に重点を置いています。 SQL Server 効率的に課題に取り組みます。常に最新の SQL Server リリースと Microsoft の進化するデータベース テクノロジを活用し、定期的にリカバリ シナリオをテストして、推奨事項が実際のベスト プラクティスを反映していることを確認します。

について質問があります SQL Server 回復または追加のデータベーストラブルシューティングガイダンスが必要ですか?Yuanは歓迎します フィードバックと提案 これらの技術リソースを改善するためです。

今すぐ共有: