次の方法で共有


レプリケートされたデータベースのアップグレードまたは修正プログラム

適用対象:SQL Server - Windows only

SQL Server では、以前のバージョンの SQL Server からレプリケートされたデータベースのアップグレードがサポートされています。ノードのアップグレード中に、他のノードでのアクティビティを停止する必要はありません。

前提条件

トポロジでサポートされるバージョンに関して、以下の規則が守られていることを確認してください。

  • ディストリビューターは、パブリッシャーのバージョン以上であれば、任意のバージョンにすることができます (多くの場合、ディストリビューターはパブリッシャーと同じインスタンスです)。

  • パブリッシャーは、ディストリビューターのバージョン以下であればどのバージョンでも使用できます。

  • サブスクライバーのバージョンは、パブリケーションの種類によって異なります。

    • トランザクション パブリケーションのサブスクライバーは、2 つのパブリッシャー バージョンのうちどちらでも使用できます。 例: SQL Server 2012 (11.x) パブリッシャーでは SQL Server 2014 (12.x) および SQL Server 2016 (13.x) のサブスクライバーを使用でき、SQL Server 2016 (13.x) パブリッシャーでは SQL Server 2014 (12.x) および SQL Server 2012 (11.x) のサブスクライバーを使用できます。

    • マージパブリケーションのサブスクライバーは、バージョンのライフサイクルサポートサイクルに従ってサポートされる、パブリッシャーのバージョンと同じかそれ以下のすべてのバージョンであることができます。

アップグレード パス

SQL Server へのアップグレード パスは、配置のパターンによって異なります。 SQL Server では、2 つの一般的なアップグレード パスが提供されています。

  • サイド バイ サイド: 並列環境を配置し、ログインやジョブなどの関連付けられたインスタンス レベル オブジェクトと共に、データベースを新しい環境に移動します。

  • インプレース アップグレード: SQL Server のインストール メディアを使用して、SQL Server のビットを置き換え、データベース オブジェクトをアップグレードすることにより、既存の SQL Server のインストールをアップグレードできます。 可用性グループ (AG) またはフェールオーバー クラスター インスタンス (FCI) を実行している環境では、インプレース アップグレードを ローリング アップグレード と組み合わせてダウンタイムを最小限に抑えます。

レプリケーション トポロジのサイド バイ サイド アップグレードの一般的な方法は、トポロジ全体の移動ではなく、一部のパブリッシャーとサブスクライバーのペアを新しいサイド バイ サイド環境に移動することです。 この段階的なアプローチは、ダウンタイムを制御するのに役立ち、レプリケーションに依存するビジネスに対する影響をある程度最小限に抑えます。

この記事の大部分は、SQL Server のバージョンのアップグレードを対象にしています。 ただし、Service Pack または累積更新プログラムで SQL Server を修正するときには、インプレース アップグレード プロセスも同様に使用する必要があります。

なし

レプリケーション トポロジのアップグレードは、複数のステップから成るプロセスです。 テスト環境でレプリケーション トポロジのレプリカをアップグレードしてみてから、実際の運用環境でアップグレードを実行することをお勧めします。 これにより、実際のアップグレード プロセス中にコストや長いダウンタイムが発生することなく、アップグレードをスムーズに処理するために必要な運用ドキュメントを整理できます。 レプリケーション トポロジをアップグレードしながら、運用環境に AG や FCI を使用することで、ダウンタイムを大幅に削減できます。 さらに、アップグレードを試みる前に、msdbmaster、ディストリビューション データベース、レプリケーションに参加しているユーザー データベースを含むすべてのデータベースのバックアップを作成することをお勧めします。

フェールオーバー クラスター インスタンスにディストリビューション データベースがある場合は、参加しているすべてのノードが同じビルドを使用するようにしてください。 1 つのノードが SQL Server 2016 (13.x) SP2-CU3 または SQL Server 2017 (14.x) CU6 より前の SQL Server バージョンであり、もう 1 つのノードが SQL Server 2016 (13.x) SP2-CU3 または SQL Server 2017 (14.x) CU6 より後の SQL Server バージョンであるセットアップはお勧めしません。 SQL Server 2016 (13.x) SP2-CU3 および SQL Server 2017 (14.x) CU6 以降では、AG でディストリビューション データベースを使用したり、ディストリビューション データベースの新しいオブジェクト (テーブル、ストアド プロシージャ) を使用したりするためのサポートが追加されました。 ディストリビューション データベースがフェールオーバー クラスター インスタンス内にあり、段階的な移行を行っている (そして、すべてのノードを同じバージョンの SQL Server にアップグレードできない) 場合に、移行期間を短くするには、新しいサブスクライバー、サブスクリプション、パブリッシャー、またはパブリケーションを、新しいバージョンの SQL Server を持つノードに追加するなどのアカウント タスクを実行することをお勧めします。

レプリケーション マトリックス

トランザクションおよびスナップショット レプリケーションの互換性マトリックス

発行元 ディストリビューター サブスクライバー
Azure SQL Managed InstanceAUTD Azure SQL Managed InstanceAUTD Azure SQL Database
Azure SQL Managed InstanceAUTD
Azure SQL Managed Instance2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
Azure SQL Managed Instance2022 Azure SQL マネージド インスタンスAUTD
Azure SQL Managed Instance2022
Azure SQL Database
Azure SQL Managed InstanceAUTD
Azure SQL Managed Instance2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2022 (16.x) SQL Server 2022 (16.x) Azure SQL Database
Azure SQL Managed InstanceAUTD
Azure SQL Managed Instance2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2019 (15.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
Azure SQL Database
Azure SQL Managed InstanceAUTD
Azure SQL Managed Instance2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2017 (14.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
Azure SQL Managed Instance2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2016 (13.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2014 (12.x) Azure SQL Managed InstanceAUTD
Azure SQL Managed Instance2022
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2017 (14.x)
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 2012 (11.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
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 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
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 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)

2022SQL Server 2022 更新ポリシーで構成された Azure SQL Managed Instance に適用されます。 AUTDAlways-up-to-date 更新ポリシーで構成された Azure SQL Managed Instance に適用されます。

マージ レプリケーションの互換性マトリックス

発行元 ディストリビューター サブスクライバー
SQL Server 2022 (16.x) SQL Server 2022 (16.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
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 2019 (15.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
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 2017 (14.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2017 (14.x)
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 2016 (13.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
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 2014 (12.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.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 2012 (11.x) SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
SQL Server 2016 (13.x)
SQL Server 2014 (12.x)
SQL Server 2012 (11.x)
SQL Server 2012 (11.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)
SQL Server 2022 (16.x)
SQL Server 2019 (15.x)
SQL Server 2017 (14.x)
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 2008 R2 (10.50.x)
SQL Server 2008 (10.0.x)

アップグレードの考慮事項

アップグレード前にトランザクション レプリケーション用のログ リーダー エージェントを実行する

SQL Server をアップグレードする前に、パブリッシュされたテーブルからコミットされたすべてのトランザクションがログ リーダー エージェントによって処理されていることを確認する必要があります。 すべてのトランザクションが確実に処理されるようにするには、トランザクション パブリケーションを含むデータベースごとに次の手順を実行します。

  1. データベースのログ リーダー エージェントが実行されていることを確認します。 既定では、エージェントは継続的に実行されています。

  2. パブリッシュされたテーブル上のユーザー アクティビティを停止します。

  3. トランザクションをディストリビューション データベースにコピーする時間をログ リーダー エージェントに与えてから、エージェントを停止します。

  4. sp_replcmds を実行して、すべてのトランザクションが処理されていることを確認します。 この手順の結果セットを空にする必要があります。

  5. sp_replflush を実行して、sp_replcmds から接続を閉じます

  6. 最新バージョンの SQL Server へのサーバー アップグレードを実行します。

  7. アップグレード後に自動的に起動しない場合は、SQL Server エージェントとログ リーダー エージェントを再起動します。

アップグレード後にマージ レプリケーション用のエージェントを実行する

アップグレード後は、マージ パブリケーションごとにスナップショット エージェントを実行し、サブスクリプションごとにマージ エージェントを実行して、レプリケーション メタデータを更新します。 サブスクリプションを再初期化する必要がないため、新しいスナップショットを適用する必要はありません。 サブスクリプション メタデータは、アップグレード後に最初にマージ エージェントを実行したときに更新されます。 そのため、サブスクリプション データベースは、パブリッシャーのアップグレード中にオンライン状態でアクティブなままにすることができます。

マージ レプリケーションでは、パブリケーションとサブスクリプションのメタデータがパブリケーションおよびサブスクリプション データベースの複数のシステム テーブルに格納されます。 スナップショット エージェントを実行すると、パブリケーション メタデータが更新され、マージ エージェントを実行すると、サブスクリプション メタデータが更新されます。 パブリケーション スナップショットの生成のみが必要です。 パラメーター化されたフィルターがマージ パブリケーションで使用される場合は、各パーティションにもスナップショットが必要です。 これらのパーティション スナップショットを更新する必要はありません。

SQL Server Management Studio、レプリケーション モニター、またはコマンド ラインで各エージェントを実行します。 スナップショット エージェントの実行について詳しくは、次の記事をご覧ください。

マージ エージェントの実行について詳しくは、次の記事をご覧ください。

マージ レプリケーションを使用するトポロジで SQL Server をアップグレードした後に、新しい機能を使用する場合は、すべてのパブリケーションのパブリケーション互換性レベルを変更します。

Standard、Workgroup、または Express エディションへのアップグレード

SQL Server の 1 つのエディションから別のエディションにアップグレードする前に、現在使用している機能がアップグレード先のエディションでサポートされていることを確認します。 詳細情報については、SQL Server 2022 の各エディションとサポートされる機能に関するページのレプリケーションのセクションをご覧ください。

レプリケーション トポロジをアップグレードする手順

以下の手順では、レプリケーション トポロジ内のサーバーをアップグレードする順序の概要を示します。 トランザクション レプリケーションまたはマージ レプリケーションのどちらを実行している場合でも、同じ手順が適用されます。 ただし、これらのステップでは、ピア ツー ピア レプリケーション、キュー更新サブスクリプション、即時更新サブスクリプションについては説明しません。

一括アップグレード

  1. ディストリビューターを更新します。
  2. パブリッシャーとサブスクライバーを更新します。 これらは、任意の順序でアップグレードできます。

Note

SQL Server 2008 (10.0.x) と SQL Server 2008 R2 (10.50.x) の場合、レプリケーション トポロジ マトリックスに合わせてパブリッシャーとサブスクライバーのアップグレードを同時に行う必要があります。 SQL Server 2008 (10.0.x) および SQL Server 2008 R2 (10.50.x) パブリッシャーまたはサブスクライバーは、SQL Server 2016 (13.x) (またはそれ以上) のパブリッシャーまたはサブスクライバーを持つことができません。 同時にアップグレードできない場合は、中間アップグレードを使用して SQL Server インスタンスを SQL Server 2014 (12.x) にアップグレードし、もう一度 SQL Server 2016 (13.x) (またはそれ以上) にアップグレードします。

サイド バイ サイド アップグレード

  1. ディストリビューターを更新します。
  2. 新しい SQL Server インスタンス ディストリビューション の構成を再構成します。
  3. パブリッシャーをアップグレードします。
  4. サブスクライバーをアップグレードします。
  5. サブスクライバーの再初期化を含めて、すべてのパブリッシャーとサブスクライバーのペアを再構成します。

ディストリビューターから Windows Server へのサイド バイ サイド移行の手順

フェールオーバー クラスターに参加している SQL Server インスタンスで使用できるアップグレード パスは、サイド バイ サイド アップグレードだけです。 次の手順は、スタンドアロン SQL Server インスタンスまたはフェールオーバー クラスター インスタンス (FCI) 内で実行できます。

  1. 別の Windows クラスターと SQL Server FCI 名またはスタンドアロン ホスト名を使用して、新しい SQL Server インスタンス (スタンドアロンまたは FCI)、エディション、およびバージョンを Windows Server 上のディストリビューターとして設定します。 レプリケーション エージェントの実行可能ファイル、レプリケーション フォルダー、およびデータベース ファイル パスが新しい環境で同じパスに見つかるようにするには、ディレクトリ構造を古いディストリビューターと同じにする必要があります。 これにより、移行/アップグレード後に必要な手順が減ります。

  2. レプリケーションが同期されていることを確認した後、すべてのレプリケーション エージェントをシャットダウンします。

  3. 現在の SQL Server ディストリビューター インスタンスをシャットダウンします。 スタンドアロン インスタンスの場合は、サーバーをシャットダウンします。 これが SQL Server FCI の場合は、ネットワーク名を含め、クラスター マネージャーで SQL Server ロール全体をオフラインにします。

  4. 古い (現在のディストリビューター インスタンス) 環境の DNS と Active Directory コンピューター オブジェクトのエントリを削除します。

  5. 古いサーバーと一致するように、新しいサーバーのホスト名を変更します。

    1. これが SQL Server FCI の場合は、古いインスタンスと同じ仮想サーバー名で新しい SQL Server FCI の名前を変更します。
  6. SAN リダイレクト、ストレージ コピー、またはファイル コピーを使用して、以前のインスタンスからデータベース ファイルをコピーします。

  7. 新しい SQL Server インスタンスをオンラインにします。

  8. すべてのレプリケーション エージェントを再起動し、エージェントが正常に動作していることを確認します。

  9. アプリケーションが予期したとおりに動作していることを確認します。

  10. SQL Server のセットアップ メディアを使用して、SQL Server の新しいバージョンへの SQL Server インスタンスのインプレース アップグレードを実行します。

Note

ダウンタイムを減らすために、ディストリビューターの の並列移行 を 1 つのアクティビティとして実行し、インプレース アップグレードを別のアクティビティとして SQL Server に実行することをお勧めします。 これにより、段階的なアプローチを取り、リスクを軽減し、ダウンタイムを最小限に抑えることができます。

マージ レプリケーションの Web 同期

マージ レプリケーションの Web 同期オプションでは、同期に使用するインターネット インフォメーション サービス (IIS) サーバー上の仮想ディレクトリに SQL Server レプリケーション リスナー (replisapi.dll) をコピーする必要があります。 Web 同期を構成すると、Web 同期の構成ウィザードによってファイルが仮想ディレクトリにコピーされます。 IIS サーバーにインストールされた SQL Server コンポーネントをアップグレードする場合、replisapi.dll を COM ディレクトリから IIS サーバーの仮想ディレクトリへ手動でコピーする必要があります。 Web 同期の構成の詳細については、「 Web 同期の構成」を参照してください。

レプリケートされたデータベースを以前のバージョンから復元する

以前のバージョンからレプリケートされたデータベースのバックアップを復元するときにレプリケーション設定が保持されるようにするには、バックアップが作成されたサーバーおよびデータベースと同じ名前のサーバーおよびデータベースに復元します。