SQL Server 分散再生概要

適用対象: SQL Server 2016 (13.x)、 SQL Server 2017 (14.x)、および SQL Server 2019 (15.x)

重要

SQL Server 分散再生は、SQL Server 2022 (16.x) では使用できません。

Microsoft SQL Server 分散再生機能を使用すると、将来の SQL Server のアップグレードによる効果を評価できます。 また、ハードウェアとオペレーティング システムのアップグレード、および SQL Server のチューニングの効果を評価する場合にも使用できます。

分散再生は、SQL Server 2022 では非推奨になっています。

分散再生は、「SQL Server 2022 (16.x) で非推奨のデータベース エンジン機能」に示すように、SQL Server 2022 (16.x) では非推奨になっています。 分散再生は SQL Server Native Client (SNAC) に依存関係があります。これは SQL Server 2022 (16.x) から削除されました。 この変更については、「SQL Server Native Client のサポート ポリシー」に文書化されています。 さらに、分散再生は、SQL トレースと SQL Server プロファイラーでキャプチャされる .trc ファイルに依存しますが、どちらも非推奨です。

分散再生 コントローラーは SQL Server 2022 (16.x) セットアップから削除されました。また、分散再生 クライアントは、バージョン 18 以降の SQL Server Management Studio (SSMS) では使用できなくなりました。 分散再生コントローラーを取得するには、SQL Server 2019 (15.x) 以前のバージョンをインストールする必要があります。 分散再生クライアントを取得するには、SSMS 17.9.1 をインストールする必要があります。

SQL Server 2022 (16.x) の顧客の場合は、代わりに ostres を含む「マークアップ言語 (RML) ユーティリティの再生」を使用してワークロードを再生できます。

Distributed Replay の利点

SQL Server プロファイラーと同様に、分散再生を使用して、アップグレードされたテスト環境に対してキャプチャしたトレースを再生できます。 SQL Server プロファイラーと異なるのは、分散再生は 1 台のコンピューターからのワークロードの再生に限定されないことです。

分散再生では、SQL Server プロファイラーよりもスケーラブルなソリューションが提供されます。 Distributed Replay を使用すると、複数のコンピューターからのワークロードを再生し、ミッションクリティカルなワークロードをより正確にシミュレートできます。

分散再生機能では、複数のコンピューターを使用してトレース データを再生し、ミッション クリティカルなワークロードをシミュレートできます。 Distributed Replay は、アプリケーション互換性テスト、パフォーマンス テスト、またはキャパシティ プランニングに使用できます。

分散再生を使用する状況

SQL Server プロファイラーと分散再生は、提供する機能が一部重複しています。

SQL Server プロファイラーを使用して、アップグレードされたテスト環境に対してキャプチャしたトレースを再生できます。 また、再生結果を分析して、潜在的な機能とパフォーマンスの非互換性を調べることができます。 しかし、SQL Server プロファイラーで再生できるのは、1 台のコンピューターからのワークロードのみです。 アクティブなコンカレント接続が多数あるか、またはスループットが高い集中型の OLTP アプリケーションを再生すると、SQL Server プロファイラーではリソースのボトルネックが発生する可能性があります。

分散再生では、SQL Server プロファイラーよりもスケーラブルなソリューションが提供されます。 Distributed Replay を使用すると、複数のコンピューターからのワークロードを再生し、ミッションクリティカルなワークロードをより正確にシミュレートできます。

次の表では、各ツールを使用する状況について説明します。

ツール 使用する状況
SQL Server プロファイラー 1 台のコンピューター上で、従来の再生のメカニズムを使用する場合。 特に、 [ステップ][カーソルまで実行][ブレークポイントの設定/解除] など、1 行ずつのデバッグ機能が必要な場合。

Analysis Services トレースを再生する場合。
Distributed Replay アプリケーションの互換性を評価する場合。 たとえば、 SQL Server とオペレーティング システムのアップグレード シナリオ、ハードウェアのアップグレード、インデックス チューニングをテストする場合などがあります。

キャプチャしたトレースのコンカレンシーが非常に高いため、1 つの再生クライアントで十分にシミュレートできない場合。

分散再生の概念

Distributed Replay 環境は次のコンポーネントで構成されます。

  • 分散再生管理ツール: 分散再生コントローラーと通信する際に使用するコンソール アプリケーション (DReplay.exe)。 Distributed Replay を制御するには管理ツールを使用します。

  • 分散再生コントローラー: SQL Server 分散再生コントローラーという名前の Windows サービスを実行するコンピューター。 分散再生コントローラーは、分散再生クライアントのアクションを統制します。 各分散再生環境には、コントローラーのインスタンスを 1 つだけ置くことができます。

  • 分散再生クライアント: SQL Server 分散再生クライアントという名前の Windows サービスを実行する 1 つまたは複数の (物理または仮想) コンピューター。 分散再生クライアントは連携して、 SQL Serverのインスタンスに対するワークロードをシミュレートします。 各分散再生環境には、1 つまたは複数のクライアントを置くことができます。

  • 対象サーバー:トレース データを再生する際に分散再生クライアントが使用できる SQL Server のインスタンス。 ターゲット サーバーはテスト環境に配置することをお勧めします。

Distributed Replay の管理ツール、コントローラー、およびクライアントは、異なるコンピューターにインストールすることも、同じコンピューターにインストールすることもできます。 同じコンピューターで実行できる Distributed Replay Controller サービスまたは Distributed Replay Client サービスのインスタンスは 1 つだけです。

次の図は、 SQL Server Distributed Replay の物理アーキテクチャを示したものです。

分散再生アーキテクチャの図。

分散再生のタスク

タスクの説明 [アーティクル]
Distributed Replay を構成する方法について説明します。 分散再生の構成
入力トレース データを準備する方法について説明します。 入力トレース データを準備する
トレース データを再生する方法について説明します。 トレース データの再生
Distributed Replay トレース データの結果を確認する方法について説明します。 再生結果の確認
管理ツールを使用して、コントローラー上の操作を開始、監視、取り消す方法について説明します。 管理ツール コマンド ライン オプション (Distributed Replay Utility)

必要条件

分散再生機能を使用する前に、この記事で説明する製品の要件を検討してください。

入力トレースの要件

トレース データを正常に再生するには、バージョンと形式の要件を満たし、必要なイベントと列が含まれている必要があります。

入力トレースのバージョン

分散再生は、次のバージョンの SQL Serverで収集される入力トレース データをサポートします。

  • SQL Server 2019 (15.x)
  • SQL Server 2017 (14.x) (累積的な更新プログラム 1 以降のバージョン - 「SQL Server 2017 の累積的な更新プログラム」を参照)
  • SQL Server 2016 (13.x)
  • SQL Server 2014 (12.x)
  • SQL Server 2012 (11.x)
  • SQL Server 2008 R2 (10.50.x)
  • SQL Server 2008 (10.0.x)
  • SQL Server 2005 (9.x)

入力トレースの形式

次のいずれかの形式の入力トレース データを使用できます。

  • .trc 拡張子を持つ 1 つのトレース ファイル。

  • ファイル ロールオーバー名前付け規則に準拠したロールオーバー トレース ファイルのセット。例: <TraceFile>.trc<TraceFile>_1.trc<TraceFile>_2.trc<TraceFile>_3.trc、... <TraceFile>_n.trc

入力トレースのイベントと列

入力トレース データには、分散再生で再生される特定のイベントと列を含める必要があります。 内の TSQL_Replay SQL Server プロファイラー テンプレートには、すべての必要なイベントおよび列と、追加情報が含まれています。 このテンプレートの詳細については、「 再生を実行するための必要条件」を参照してください。

警告

TSQL_Replay テンプレートを使用して入力トレース データをキャプチャしない場合、または入力トレースの要件が満たされない場合、予期しない再生結果となる可能性があります。

また、次のイベントが含まれる場合に限り、カスタム トレース テンプレートを作成し、それを使用して分散再生でイベントを再生することもできます。

  • Audit Login
  • Audit Logout
  • ExistingConnection
  • RPC Output Parameter
  • RPC:Completed
  • RPC:Starting
  • SQL:BatchCompleted
  • SQL:BatchStarting

サーバー側カーソルを再生している場合は、次のイベントも必要です。

  • CursorClose
  • CursorExecute
  • CursorOpen
  • CursorPrepare
  • CursorUnprepare

サーバー側の準備された SQL ステートメントを再生している場合は、次のイベントも必要です。

  • Exec Prepared SQL
  • Prepare SQL

すべての入力トレース データに、次の列を含める必要があります。

  • Event Class
  • EventSequence
  • TextData
  • アプリケーション名
  • LoginName
  • DatabaseName
  • データベース ID
  • HostName
  • Binary Data
  • SPID
  • 開始時刻
  • EndTime
  • IsSystem

サポートされている入力トレースとターゲット サーバーの組み合わせ

次の表に、サポートされているトレース データのバージョンと、データを再生可能なサポートされている SQL Server のバージョンを示します。

入力トレース データのバージョン ターゲット サーバー インスタンスのサポートされている SQL Server のバージョン
SQL Server 2005 (9.x) SQL Server 2008 (10.0.x)、SQL Server 2008 R2 (10.50.x)、SQL Server 2012 (11.x)、SQL Server 2014 (12.x)、SQL Server 2016 (13.x)、SQL Server 2017 (14.x)、SQL Server 2019 (15.x)
SQL Server 2008 (10.0.x) SQL Server 2008 (10.0.x)、SQL Server 2008 R2 (10.50.x)、SQL Server 2012 (11.x)、SQL Server 2014 (12.x)、SQL Server 2016 (13.x)、SQL Server 2017 (14.x)、SQL Server 2019 (15.x)
SQL Server 2008 R2 (10.50.x) SQL Server 2008 R2 (10.50.x)、SQL Server 2012 (11.x)、SQL Server 2014 (12.x)、SQL Server 2016 (13.x)、SQL Server 2017 (14.x)、SQL Server 2019 (15.x)
SQL Server 2012 (11.x) SQL Server 2012 (11.x)、SQL Server 2014 (12.x)、SQL Server 2016 (13.x)、SQL Server 2017 (14.x)、SQL Server 2019 (15.x)
SQL Server 2014 (12.x) SQL Server 2014 (12.x),SQL Server 2016 (13.x), SQL Server 2017 (14.x)、SQL Server 2019 (15.x)
SQL Server 2016 (13.x) SQL Server 2016 (13.x)、SQL Server 2017 (14.x)、SQL Server 2019 (15.x)
SQL Server 2017 (14.x) SQL Server 2017 (14.x)、SQL Server 2019 (15.x)
SQL Server 2019 (15.x) SQL Server 2019 (15.x)

オペレーティング システムの要件

管理ツールおよびコントローラーとクライアント サービスを実行するためにサポートされるオペレーティング システムは、使用している SQL Server インスタンスと同じです。 お使いの SQL Server インスタンスでサポートされているオペレーティング システムの詳細については、「SQL Server 2016 および2017: ハードウェアおよびソフトウェアの要件」を参照してください。

分散再生機能は、x86 ベースおよび x64 ベースの両方のオペレーティング システムでサポートされています。 x64 ベース オペレーティング システムでは、Windows on Windows (WOW) モードのみがサポートされます。

インストールの制限

コンピューター 1 台につき、分散再生機能がインストールされている 1 つのインスタンスのみを持つことができます。 次の表に、1 つの分散再生環境における各機能のインストール数の上限を示します。

分散再生機能 再生環境ごとのインストール数の上限
SQL Server 分散再生コントローラー サービス 1
SQL Server 分散再生クライアント サービス 16 (物理コンピューターまたは仮想コンピューター)
管理ツール 無制限

Note

1 台のコンピューターにインストールできる管理ツールのインスタンスは 1 つだけですが、管理ツールの複数のインスタンスを開始できます。 複数の管理ツールから発行されたコマンドは、受信された順に解決されます。

データ アクセス プロバイダー

分散再生は、 SQL Server Native Client ODBC データ アクセス プロバイダーのみをサポートします。

ターゲット サーバーの準備要件

ターゲット サーバーはテスト環境に配置することをお勧めします。 最初に記録されたものと異なる SQL Server のインスタンスに対してトレース データを再生するには、ターゲット サーバーで次のステップを完了する必要があります。

  • トレース データに含まれるすべてのログインとユーザーが、ターゲット サーバー上の同一のデータベースに存在すること。

  • ターゲット サーバー上のすべてのログインとユーザーに、元のサーバー上で与えられているものと同じ権限が与えられていること。

  • ターゲット コンピューター上のデータベース ID が、ソース コンピューター上のデータベース ID と同じであること。 ただし、これらが同じでない場合、トレース内に DatabaseName が存在すれば、それに基づいてマッチングを行えます。

  • トレース データに含まれている各ログインの既定データベースが、ターゲット サーバー上で、ログインの対象データベースにそれぞれ設定されていること。 たとえば、再生されるトレース データが、 の元のインスタンス上のデータベースFred_Db に対する、ログイン Fred SQL Serverの利用状況を含むとします。 この場合、ターゲット サーバー上では、ログイン Fred の既定データベースが、Fred_Db に一致するデータベースに設定されていなければなりません (データベース名が異なる場合も同様)。 ログインの既定データベースを設定するには、 sp_defaultdb システム ストアド プロシージャを使用します。

失われたログインや不正なログインに関連付けられたイベントを再生すると、再生エラーとなります。ただし、再生の処理は継続されます。