Database Experimentation Assistant でトレースをキャプチャする

Database Experimentation Assistant (DEA) を使用して、キャプチャされたサーバー イベントのログを含むトレース ファイルを作成できます。 キャプチャされたサーバー イベントは、特定の期間中に特定のサーバーで発生するイベントです。 トレース キャプチャは、サーバーごとに 1 回実行する必要があります。

トレース キャプチャを開始する前に、すべてのターゲット データベースをバックアップしてください。

SQL Server でのクエリ キャッシュは、評価結果に影響を与える可能性があります。 評価結果の一貫性を向上させるために、サービス アプリケーションで SQL Server サービス (MSSQLSERVER) を再起動することをお勧めします。

トレースキャプチャを構成する

  1. DEA の左側のナビゲーション バーで、カメラ アイコンを選択し、[すべてのキャプチャ] ページで [新しいキャプチャ] を選択します。

    Create a capture in DEA

  2. [新しいキャプチャ] ページの [キャプチャの詳細] で、次の情報を入力または選択します。

    • キャプチャ名: キャプチャのトレース ファイルの名前を入力します。

    • 形式: キャプチャの形式 (Trace または XEvents) を指定します。

    • 期間: トレース キャプチャを実行する時間 (分単位) を選択します。

    • キャプチャの場所: トレース ファイルの保存先パスを選択します。

      Note

      トレース ファイルへのファイル パスは、SQL Server を実行しているコンピューター上にある必要があります。 SQL Server サービスが特定のアカウントに対して設定されていない場合、トレース ファイルを書き込むには、指定したフォルダーへの書き込み権限がサービスに必要になる場合があります。

  3. [はい、手動でバックアップを作成しました...] チェック ボックスをオンにして、バックアップを作成したことを確認します。

  4. [キャプチャの詳細] で、次の情報を入力または選択します。

    • サーバーの種類: SQL Server の種類 (SqlServerAzureSqlDbAzureSqlManagedInstance) を指定します。
    • サーバー名: SQL Server のサーバー名または IP アドレスを指定します。
    • 認証の種類: 認証の種類に [Windows] を選択します。
    • データベース名: データベース トレースを開始するデータベースの名前を入力します。 データベースを指定しない場合、サーバー上のすべてのデータベースでデータベーストレースが実行されます。
  5. シナリオに応じて、[接続を暗号化する] および [サーバー証明書を信頼する] のチェックボックスをオンまたはオフにします。

    New Capture page

トレース キャプチャを開始する

  1. 必要な情報を入力または選択したら、[開始] を選択してトレース キャプチャを開始します。

    入力した情報が有効であれば、トレース キャプチャ プロセスが開始します。 それ以外の場合は、無効なエントリを含むテキスト ボックスが赤で強調表示されます。 エラーが発生した場合は、必要なエントリを修正し、[開始] をもう一度選択します。

    トレース キャプチャの実行中、キャプチャの詳細の下に、トレース キャプチャ プロセスの状態と進行状況が表示されます。

    Monitor capture progress

  2. トレース キャプチャの実行が完了すると、新規に作成されたトレースファイル (.trc) が初期構成時に指定した キャプチャの場所 に保存されます。

    Completed trace capture

    トレース ファイルには、SQL Server データベースのアクティビティのトレース結果が含まれています。 .trc ファイルは、SQL Server によって検出および報告されるエラーに関する詳細情報を提供するように設計されています。

トレースキャプチャについてよく寄せられる質問

DEA に関してよく寄せられる質問 (FAQ) を以下に取り上げます。

Q: 運用データベースでトレース キャプチャを実行すると、どのようなイベントがキャプチャされますか?

次の表に、DEA がトレース用に収集するイベントと対応する列データを示します。

Event Name テキストデータ (1) バイナリデータ (2) データベースID (3) ホスト名 (8) アプリケーション名 (10) ログイン名(11) SPID (12) 開始時刻 (14) 終了時刻 (15) データベース名 (35) イベント シーケンス (51) IsSystem (60)
RPC:Completed (10) * * * * * * * * * * *
RPC:Starting (11) * * * * * * * * * *
RPC Output Parameter (100) * * * * * * * * * *
SQL:BatchCompleted (12) * * * * * * * * * * *
SQL:BatchStarting (13) * * * * * * * * * *
Audit Login (14) * * * * * * * * * * *
Audit Logout (15) * * * * * * * * * * *
ExistingConnection (17) * * * * * * * * * * *
CursorOpen (53) * * * * * * * * * *
CursorPrepare (70) * * * * * * * * * *
Prepare SQL (71) * * * * * * * * *
Exec Prepared SQL (72) * * * * * * * * *
CursorExecute (74) * * * * * * * * * *
CursorUnprepare (77) * * * * * * * * * *
CursorClose (78) * * * * * * * * * *

Q: トレース キャプチャの実行中に、実稼働サーバーにパフォーマンスの影響はありますか。

はい。トレース収集時間のパフォーマンスへの影響は最小限です。 テストでは、メモリ負荷は約 3% でした。

Q: 運用環境のワークロードでトレースをキャプチャするには、どのような種類のアクセス許可が必要ですか?

  • DEA アプリケーションでトレース操作を実行する Windows ユーザーは、SQL Server を実行しているコンピューターで sysadmin 権限を持っている必要があります。
  • SQL Server を実行しているコンピューターで使用されるサービス アカウントには、指定されたトレース ファイル パスへの書き込みアクセス権が必要です。

Q: サーバー全体または単一データベース上のトレースのみをキャプチャできますか。

DEA を使用して、サーバー内のすべてのデータベースまたは単一データベースのトレースをキャプチャできます。

Q: 運用環境でリンク サーバーを構成しました。 これらのクエリはトレースに表示されますか?

サーバー全体のトレース キャプチャを実行している場合、トレースはリンク サーバー クエリを含むすべてのクエリをキャプチャします。 サーバー全体のトレース キャプチャを実行するには、[新しいキャプチャ] の下の [データベース名] ボックスを空のままにします。

Q: 運用環境のワークロード トレースの推奨される最小時間はいくつですか?

ワークロード全体を最もよく表す時間を選択することをお勧めします。 そうすることで、分析はワークロード内のすべてのクエリで実行されます。

Q: トレース キャプチャを開始する直前にデータベース バックアップを作成することはどれだけ重要ですか?

トレース キャプチャを開始する前に、すべてのターゲット データベースを必ずバックアップしてください。 ターゲット 1 とターゲット 2 でキャプチャされたトレースが再生されます。 データベースの状態が同じでない場合、実験の結果には偏りが生じます。

Q: トレースではなく XEvent を収集することはできますか。XEvent を再生できますか?

はい。 DEA では XEvent がサポートされています。 最新バージョンの DEA をダウンロードして、試してみてください。

トレース キャプチャのトラブルシューティング

トレース キャプチャの実行時にエラーが表示される場合は、次の点を確認します。

  • SQL Server を実行しているサーバー コンピューターの名前。 確認するには、SQL Server Management Studio (SSMS) を使用して、SQL Server を実行しているコンピューターに接続してみてください。
  • ファイアウォールの構成では、SQL Server を実行しているコンピューターへの接続はブロックされません。
  • ユーザーは、再生に関する FAQ に記載されているアクセス許可を持っています。
  • トレース名が、標準のロールオーバー規則 (Capture_1) に従っていません。 代わりに、Capture_1A や Capture1 などのトレース名を試してください。

表示される可能性のあるエラーと、それらを解決するための解決策を次に示します。

考えられるエラー ソリューション
ターゲット SQL Server でトレースを開始できません。必要なアクセス許可があるかどうか、および指定されたトレース ファイル パス Sql エラー コード (53)への書き込みアクセス権が SQL Server アカウントにあるかどうかを確認します DEA ツールを実行しているユーザーは、SQL Server を実行しているコンピューターにアクセスできる必要があります。 ユーザーには sysadmin ロールが割り当てられている必要があります。
ターゲット SQL Server でトレースを開始できません。必要なアクセス許可があるかどうか、および指定されたトレース ファイル パス Sql エラー コード (19062) への書き込みアクセス権が SQL Server アカウントにあるかどうかを確認します 指定されたトレース パスが存在しないか、SQL Server サービスが実行されているアカウント (NETWORK SERVICE など) に対する書き込みアクセス許可がない可能性があります。 パスが通っていて、トレースを開始するために必要なアクセス許可が必要です。
現在、ターゲット サーバーで DEA トレースが実行されています。 アクティブなトレースは、ターゲット サーバーで既に実行されています。 サーバー全体のトレースが既に実行されている場合、新しいトレースを開始することはできません。
トレースをキャプチャするために要求されたデータベースを開くできません。 このエラーは、データベース名が正しくない場合に発生する可能性があります。 指定したデータベースが存在しないか、現在のユーザーがアクセスできません。 正しいデータベース名を使用します。

Sql エラー コードで示されているエラー以外のエラーが表示される場合は、「データベース エンジンエラー」の詳細な説明を参照してください。

関連項目