Database Experimentation Assistant でトレースを再生する
Note
このツールは、2024 年 12 月 15 日に廃止される予定です。 問題が発生しても、その問題に対するこのツールへのサポートを停止し、バグ修正や追加の更新プログラムは発行しません。
Database Experimentation Assistant (DEA) では、アップグレードされたテスト環境に対してキャプチャされたトレース ファイルを再生できます。 たとえば、SQL Server 2008 R2 で実行される運用ワークロードを考えてみましょう。 ワークロードのトレース ファイルは 2 回再生する必要があります。運用環境で実行されている SQL Server のバージョンが同じ環境では 1 回、SQL Server 2016 などのアップグレードターゲット SQL Server バージョンの環境では 2 回再生されます。
Note
トレースを再生するには、分散再生トレースを実行するように仮想マシンまたは物理コンピューターを手動で設定する必要があります。 詳細については、「Database Experimentation Assistant の分散再生を構成する」を参照してください。
ターゲット 1 のトレース再生を構成する
まず、既存の運用環境を表すターゲット 1 に対してトレース再生を実行する必要があります。
DEA の左側のナビゲーション バーで矢印アイコンを選択し、[すべての再生] ページで [新しい再生] を選択します。
Note
分散再生コントローラー コンピューターには、リモート接続に使用するユーザー アカウントへのアクセス許可が必要です。
[新しい再生] ページの [再生の詳細] で、次の情報を入力または選択します。
再生名: トレース再生の名前を入力します。
ソース トレース形式: ソース トレース ファイルの形式 (Trace または XEvents) を指定します。
ソース ファイルへの完全パス: ソース トレース ファイルへの完全パスを指定します。 DReplay を使用する場合は、そのファイルが DReplay コントローラーとして機能するコンピューターに存在する必要があり、ユーザー アカウントにはファイルとフォルダーへのアクセ権が必要です。
再生ツール: 再生ツール (DReplay または InBuilt) を指定します。
コントローラー コンピューター名: 分散再生コントローラーとして機能するコンピューターの名前を指定します。
[トレース再生ファイルの場所]: トレース再生に関連付けられているトレース ファイル/XEvent を格納するパスを指定します。
Note
Azure SQL Database または Azure SQL Managed Instance の場合、Azure Blob Storage アカウントの SAS URI を指定する必要があります。
[はい、データベースを手動で復元しました] のチェック ボックスを選択して、データベースを復元したことを確認します。
[SQL Server 接続の詳細] で、次の情報を入力または選択します。
- サーバーの種類: SQL Server の種類 (SqlServer、AzureSqlDb、AzureSqlManagedInstance) を指定します。
- サーバー名: SQL Server のサーバー名または IP アドレスを指定します。
- 認証の種類: 認証の種類に [Windows] を選択します。
- データベース名: サーバー側トレースを開始するデータベースの名前を入力します。 データベースを指定しない場合、サーバー上のすべてのデータベースでデータベーストレースが実行されます。
シナリオに応じて、[接続を暗号化する] および [サーバー証明書を信頼する] のチェックボックスをオンまたはオフにします。
ターゲット 1 でトレース再生を開始する
必要な情報を入力または選択したら、[開始] を選択してトレースの再生を開始します。
入力した情報が有効な場合は、分散再生プロセスが開始されます。 それ以外の場合は、正しくない情報を含むテキスト ボックスが赤で強調表示されます。 入力した値が正しいことを確認し、[開始] を選択します。
必要に応じてプロセスを監視できます。 再生の実行が完了すると、DEA は指定した場所のファイルに結果を格納します。
ターゲット 2 に対してトレース再生を実行する
ターゲット 1 に対するトレース再生の実行が完了したら、目的のアップグレード環境を表す 2 番目のターゲットに対して同じ操作を行う必要があります。
今回は、ターゲット 2 の環境に関連付けられている詳細を使用して、トレース再生を構成します。
ターゲット 2 でトレース再生を開始します。
必要に応じてプロセスを監視できます。 再生の実行が完了すると、DEA は指定した場所のファイルに結果を格納します。
トレースの再生に関するよくある質問
Q: ターゲット サーバーでリプレイ キャプチャを開始するには、どのようなセキュリティ アクセス許可が必要ですか?
- DEA アプリケーションでトレース操作を実行している Windows ユーザーは、SQL Server を実行しているターゲット コンピューターに対する sysadmin 権限を持っている必要があります。 トレースを開始するには、これらのユーザー権限が必要です。
- SQL Server を実行しているターゲット コンピューターが実行されているサービス アカウントには、指定したトレース ファイル パスへの書き込みアクセス権が必要です。
- 分散再生クライアント サービスが実行されているサービス アカウントには、SQL Server を実行しているターゲット コンピューターに接続してクエリを実行するためのユーザー権限が必要です。
Q: 同じセッションで複数の再生を開始できますか?
はい。複数の再生を開始し、同じセッションで完了するように追跡できます。
Q: 複数の再生を並列で開始できますか。
はい。ただし、[コントローラーとクライアント]で同じコンピューター セットが選択されているわけではありません。 [コントローラーとクライアント] はビジー状態になります。 [コントローラーとクライアント]の下に別のコンピューター セットを設定して、並列再生を開始します。
Q: 通常、再生が完了するまでにどのくらいの時間がかかりますか?
通常、リプレイには、ソース トレースと同じ時間と、ソース トレースの前処理にかかる時間が必要です。 ただし、コントローラーに登録されているクライアント コンピューターがリプレイから生成された負荷を管理するのが不十分な場合、再生の完了に想定外に時間がかかる場合があります。 最大 16 台のクライアント コンピューターをコントローラーに登録できます。
Q: ターゲット トレース ファイルのサイズはどのくらいですか?
ターゲット トレース ファイルは、ソース トレースのサイズの 5から15 倍にすることができます。 ファイル サイズは、実行されるクエリの数に基づきます。 たとえば、クエリ プランの BLOB が大きい場合があります。 これらのクエリの統計が頻繁に変更される場合は、より多くのイベントがキャプチャされます。
Q: データベースを復元する必要がある理由
SQL Server は、ステートフル リレーショナル データベース管理システムです。 A/B テストを適切に実行するには、データベースの状態を常に保持する必要があります。 そうしないと、再生中のクエリで、運用環境に表示されないエラーが表示される場合があります。 これらのエラーを回避するには、ソース キャプチャの直前にバックアップすることをお勧めします。 同様に、再生中にエラーが発生した場合の対策を講じる必要があります。SQL Server を実行しているターゲット コンピューターでバックアップを復元する必要があります。
Q: 再生ページの "pass %" とはどういう意味ですか?
Pass % は、渡されたクエリのみの割合を意味します。 エラーの数が予想されるかどうかを診断できます。 エラーが予想される場合や、データベースの整合性が失われたためにエラーが発生する可能性があります。 pass %の値が期待通りでない場合は、トレースを停止し、SQL Profiler のトレース ファイルを見て、どのクエリが成功しなかったかを確認します。
Q: 再生中に収集されたトレース イベントを確認するにはどうすればよいですか。
ターゲット トレース ファイルを開き、SQL Profiler で表示します。 または、リプレイ キャプチャを変更する場合は、すべての SQL Server スクリプトが C:\Program Files (x86)\Microsoft Corporation\Database Experimentation Assistant\Scripts\StartReplayCapture.sql で入手できます。
Q: 再生中に DEA はどのようなトレース イベントを収集しますか?
DEA は、パフォーマンス関連の情報を含むトレース イベントをキャプチャします。 キャプチャの構成は、StartReplayCaptureTrace.sql スクリプトにあります。 これらのイベントは、sp_trace_setevent (Transact-SQL) リファレンス ドキュメントに記載されている一般的な SQL Server トレース イベントです。
トレース再生のトラブルシューティング
Q: SQL Server を実行しているコンピューターに接続できないのはなぜですか?
- SQL Server を実行しているコンピューターの名前が有効であることを確認してください。 確認するには、SQL Server Management Studio (SSMS) を使用してサーバーに接続してみてください。
- ファイアウォール構成によって、SQL Server を実行しているコンピューターへの接続がブロックしていないことを確認します。
- ユーザーが必要なユーザー権限を持っていることを確認してください。
- 分散再生クライアントのサービス アカウントが、SQL Server を実行しているコンピューターにアクセスできるかどうかを確認します。
詳細については、%temp%\DEA のログを参照してください。 問題が解決しない場合は、サポート チームにお問い合わせください。
Q: 分散再生コントローラーに接続できないのはなぜですか?
- 分散再生コントローラー サービスがコントローラー マシン上で実行されていることを確認します。 確認するには、分散再生管理ツールを使用します (コマンド
dreplay.exe status -f 1
を実行)。 - 再生がリモートで開始された場合:
- DEA を実行しているコンピューターがコントローラーに正常に ping が通ることを確認します。 [再生環境の構成] ページの手順に従って、ファイアウォール設定で接続が許可されていることを確認します。 詳細については、「 SQL Server 分散再生」を参照してください。
- DCOM リモート起動とリモート アクティベーションが分散再生コントローラーのユーザーに許可されていることを確認してください。
- 分散再生コントローラーのユーザーに対して DCOM リモート アクセスユーザー権限が許可されていることを確認します。
Q: トレース ファイルのパスがコンピューターに存在します。 分散再生コントローラーで見つからないのはなぜですか?
分散再生は、ローカル ディスク リソースにのみアクセスできます。 再生を開始する前に、ソース トレース ファイルを分散再生コントローラー コンピューターにコピーする必要があります。 また、DEA の [新しい再生 ] ページにパスを指定する必要があります。
UNC パスは分散再生と互換性がありません。 分散再生パスは、拡張子を含む最初のソース トレース ファイルへのローカル絶対パスである必要があります。
Q: [新しい再生] ページでファイルを参照できないのはなぜですか?
リモート コンピューター上のフォルダーを参照できないため、ファイルの参照は役に立ちません。 絶対パスをコピーして貼り付ける方が効率的です。
Q: トレースで再生を開始しましたが、分散再生ではイベントが再生されませんでした。 なぜですか?
この問題は、トレース ファイルに再生可能なイベントがない、またはイベントの再生方法に関する情報がないために発生する可能性があります。 指定されたトレース ファイル パスがソース トレース ファイルを指しているかどうかを確認します。 ソース トレース ファイルは、StartCaptureTrace.sql スクリプトで提供される構成を使用して作成されます。
Q: SQL Server 2017 分散再生コントローラーを使用してトレース ファイルを前処理しようとすると、"予期しないエラーが発生しました" という内容が表示されます。 なぜですか?
この問題は、SQL Server 2017 の RTM バージョンで知られています。 詳細については、「修正: DReplay 機能を使用してキャプチャされたトレースを SQL Server 2017 で再生すると予期しないエラーが発生する」を参照してください。
この問題は、SQL Server 2017 の最新の累積的な更新プログラム 1 で対処されています。 SQL Server 2017 のお使いのバージョン用の最新の累積的な更新プログラム 1 をダウンロードしてインストールします。
関連項目
- 提案された変更に関する分析情報を得るのに役立つ分析レポートを作成するには、「レポートの作成」を参照してください。