レプリケートされたデータベースのアップグレードに関する注意点

SQL Server 2008 では、レプリケートされたデータベースを以前のバージョンの SQL Server からアップグレードすることができます。ノードのアップグレード中は、その他のノードでの操作を停止する必要はありません。トポロジでサポートされるバージョンに関して、以下の規則が守られていることを確認してください。

  • SQL Server 2008 のレプリケーション トポロジに追加できるのは、SQL Server 2000 Service Pack 3 (SP3) 以降です。SQL Server 2005 を使用する場合は、最小バージョンの要件はありません。

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

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

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

    • トランザクション パブリケーションのサブスクライバは、2 つのパブリッシャ バージョンのうちどちらでも使用できます。たとえば、実行中の SQL Server 2000 のパブリッシャには SQL Server 2008 のサブスクライバを設定することができ、SQL Server 2008 のパブリッシャには SQL Server 2000 のサブスクライバを設定することができます。

    • マージ パブリケーションのサブスクライバは、パブリッシャのバージョン以下であればどのバージョンでも使用できます。

注意注意

このトピックは、セットアップ ヘルプ ドキュメントおよび SQL Server オンライン ブックで参照できます。セットアップ ヘルプ ドキュメントで太字で表示されているトピック リンクは、オンライン ブックでのみ参照可能なトピックを示しています。

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

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

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

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

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

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

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

  6. SQL Server 2008 へのサーバー アップグレードを実行します。

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

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

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

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

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

マージ エージェントの実行の詳細については、次のトピックを参照してください。

マージ レプリケーションを使用するトポロジで SQL Server をアップグレードした後に、新しい機能を使用する場合は、すべてのパブリケーションのパブリケーション互換性レベルを変更します。詳細については、「レプリケーション トポロジにおける複数バージョンの SQL Server の使用」を参照してください。

Standard Edition、Workgroup Edition、または Express Edition へのアップグレード

SQL Server 2008 のいずれかのエディションから別のエディションへアップグレードする前に、現在使用している機能がアップグレード先のエディションでサポートされているかどうかを確認します。詳細については、「SQL Server 2008 の各エディションがサポートする機能」の「SQL Server 2008 のレプリケーション機能」を参照してください。

新しいレプリケーション エージェントのセキュリティ モデル

SQL Server 2005 より前のバージョンの SQL Server の既定では、エージェントは SQL Server エージェント サービス アカウントのコンテキストで実行されていました。SQL Server 2005 では、レプリケーション エージェントが実行されデータベースなど他のリソースへの Windows 統合接続が行われる際の各アカウントに対して、きめ細かい制御が可能になり、エージェントごとに異なるアカウントを指定できるようになりました。詳細については、「セキュリティと保護 (レプリケーション)」および「レプリケーション エージェントのセキュリティ モデル」を参照してください。

トポロジ内で SQL Server 2000 をアップグレードおよび実行する場合、新しいセキュリティ モデルは次のように影響します。

  • SQL Server 2000 で作成されたレプリケーション スクリプトの場合、セキュリティに関して強化された機能を活用するには、そのスクリプトを SQL Server 2008 用にアップグレードする必要があります。詳細については、「レプリケーション スクリプトをアップグレードする方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

  • SQL Server 2000 から SQL Server 2008 へとアップグレードしたディストリビュータまたはサブスクライバは、引き続き SQL Server エージェント アカウントの下で実行されるため、必要以上に多くの特権が設定されている可能性があります。アップグレード後は、必要最小限の特権を持つ個別のアカウントをエージェントに対して指定することをお勧めします。個別のアカウントを指定するには

    1. パブリケーションおよびサブスクリプションをスクリプト化します。

    2. スクリプトの変更を行います。詳細については、「レプリケーション スクリプトをアップグレードする方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

    3. パブリケーションおよびサブスクリプションを削除します。詳細については、「データとデータベース オブジェクトのパブリッシュ」および「パブリケーションのサブスクライブ」を参照してください。

    4. 変更されたスクリプトを使用してパブリケーションおよびサブスクリプションを再作成します。

    エージェントで必要とされる特権については、「レプリケーション エージェントのセキュリティ モデル」を参照してください。ログインおよびパスワードの管理については、「レプリケーションのログインとパスワードの管理」を参照してください。アップグレード後に作成された新しいレプリケーション構成では、レプリケーション エージェントごとに特定のアカウント構成を行う必要があります。

    注意注意

    ローカル データベース接続で SQL Server 認証を使用するよう構成されているエージェントは、すべて Windows 認証を使用するよう変更されます。ローカル接続は、エージェントと同じコンピュータ上で実行されている SQL Server のインスタンスへの接続であり、エージェントによって行われます。たとえば、マージ エージェントは、プル サブスクリプションの場合はサブスクライバで動作します。したがって、マージ エージェントがサブスクライバに対して行う接続はローカル接続です。

  • 以前のバージョンの SQL Server を実行しているレプリケーション トポロジに参加する場合、前のレプリケーション セキュリティ モデルはそのまま保持されます。次に例を示します。

    • SQL Server 2000 を実行しているサブスクライバへのプル サブスクリプションでは、マージ エージェントまたはディストリビューションがそのサブスクライバで作成されるため、新しいセキュリティ モデルを使用しません。

    • SQL Server 2008 を実行しているディストリビュータから、SQL Server 2000 を実行しているサブスクライバへのプッシュ サブスクリプションでは、マージ エージェントまたはディストリビューションがそのディストリビュータで作成されるため、新しいセキュリティ モデルを使用します。

    • SQL Server 2000 を実行しているパブリッシャと、SQL Server 2008 を実行しているディストリビュータの組み合わせは、エージェントがパブリケーション データベースのコンテキストで作成されるため、新しいセキュリティ モデル (スナップショット エージェント、ログ リーダー エージェント、キュー リーダー エージェント用) を使用しません。

  • SQL Server 2005 と SQL Server 2008 では、同じセキュリティ モデルを使用します。

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

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

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

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