レプリケーション トポロジにおける複数バージョンの SQL Server の使用

更新 : 2007 年 9 月 15 日

レプリケーションでは、複数のバージョンの Microsoft SQL Server にデータをレプリケートできます。このトピックの内容は次のとおりです。

  • サポートされる SQL Server バージョン
  • 以前のバージョンと SQL Server 2005 のデータ型のマッピング
  • 以前のバージョンでレプリケートされたデータベースの復元
  • マージ パブリケーションの互換性レベル

Microsoft SQL Server 2005 Express Edition および Microsoft SQL Server Compact Edition にデータをレプリケートする方法については、「SQL Server Express へのデータのレプリケート」および「SQL Server Compact Edition へのデータのレプリケート」を参照してください。SQL Server の各エディションでサポートされる機能については、「SQL Server 2005 の各エディションがサポートする機能」を参照してください。

ms143241.note(ja-jp,SQL.90).gifメモ :
このトピックは、セットアップ ヘルプ ドキュメントおよび SQL Server 2005 Books Online で参照できます。セットアップ ヘルプ ドキュメントで太字で表示されているトピック リンクは、SQL Server 2005 Books Online でのみ参照可能なトピックを示しています。

サポートされる SQL Server バージョン

SQL Server 2005 のレプリケーション トポロジに追加できるのは、SQL Server Version 7.0 Service Pack 4 (SP4) 以降です。SQL Server 2000 を使用する場合は、SP3 以降が必要です。

異なるバージョンの SQL Server 間でレプリケートを行う場合は、使用している最も古いバージョンの機能しか使用できないことがあります。たとえば、ディストリビュータを SQL Server 2005 のインスタンスにアップグレードしても、SQL Server 2000 のインスタンスを実行するパブリッシャと、SQL Server 7.0 のインスタンスを実行するサブスクライバがある場合は、SQL Server 7.0 の一般的な機能とレプリケーション機能しか使用できません。

ms143241.note(ja-jp,SQL.90).gifメモ :
SQL Server の 64 ビット環境と 32 ビット環境には同じディスク上ストレージ形式が使用されているため、レプリケーション トポロジには、32 ビット環境で動作するサーバー インスタンスと 64 ビット環境で動作するサーバー インスタンスを混在させることができます。

どのタイプのレプリケーションの場合も、ディストリビュータのバージョンがパブリッシャのバージョン以上である必要があります (多くの場合、ディストリビュータはパブリッシャと同じインスタンスです)。SQL Server 2005 は、SQL Server 2005 および SQL Server 2000 のリモート ディストリビュータとして使用することはできますが、SQL Server 7.0 のリモート ディストリビュータとして使用することはできません。次の表は、同じトポロジに追加可能な SQL Server のバージョンについての補足情報です。SQL Server の各種エディションでサポートされているレプリケーション機能の詳細については、「SQL Server 2005 の各エディションがサポートする機能」を参照してください。

トランザクション レプリケーションとスナップショット レプリケーションで読み取り専用サブスクライバを設定する場合

ディストリビュータ

SQL Server 7.0

SQL Server 2000

SQL Server 2005

パブリッシャ

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 2000

SQL Server 2005

サブスクライバ

SQL Server 7.0

SQL Server 2000

SQL Server 2005

SQL Server 7.0

SQL Server 2000

SQL Server 2005

SQL Server 7.0

SQL Server 2000

SQL Server 2005

上の表は、トランザクション パブリケーションの読み取り専用サブスクライバは、2 つのパブリッシャ バージョンのうちどちらでも使用できることを示しています。たとえば、SQL Server 7.0 のパブリッシャには SQL Server 2005 のサブスクライバを設定することができ、SQL Server 2005 のパブリッシャは SQL Server 7.0 のサブスクライバを設定することができます。

トランザクション レプリケーションで更新サブスクライバを設定する場合

ディストリビュータ

SQL Server 7.0

SQL Server 2000

SQL Server 2005

パブリッシャ

SQL Server 7.01

SQL Server 7.01

SQL Server 20002

SQL Server 20002

SQL Server 20053

サブスクライバ

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 2005

SQL Server 7.0

SQL Server 2000

SQL Server 2005

1 SQL Server 7.0 パブリッシャの場合、SQL Server 7.0 のサブスクライバのみサポートされます。

2 SQL Server 2000 パブリッシャの場合、SQL Server 7.0、SQL Server 2000、および SQL Server 2005 のサブスクライバがサポートされます。

3 SQL Server 2005 パブリッシャの場合、SQL Server 2000 および SQL Server 2005 のサブスクライバがサポートされます。

マージ レプリケーション

ディストリビュータ

SQL Server 7.0

SQL Server 2000

SQL Server 2005

パブリッシャ

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 2000

SQL Server 2005

サブスクライバ

SQL Server 7.0

SQL Server 7.0

SQL Server 2000

SQL Server 7.0

SQL Server 2000

SQL Server 2005

上記の表は、マージ パブリケーションのサブスクライバは、パブリッシャのバージョン以下であればどのバージョンでも使用できることを示しています。以前のバージョンに対する互換性の詳細については、このトピックの「マージ パブリケーションの互換性レベル」を参照してください。

SQL Server 7.0 と SQL Server Management Studio

SQL Server Management Studio は、SQL Server 2000 以降を実行するインスタンスに接続できます。SQL Server 7.0 を実行するサブスクライバについては、次の点に注意してください。

  • サブスクリプションとパブリケーションは、SQL Server 7.0 ツール、SQL Server 2000 ツール、SQL 分散管理オブジェクト (SQL-DMO)、またはストアド プロシージャで作成できます。
  • プル サブスクリプションのエージェントを Management Studio またはレプリケーション モニタから起動することはできません。エージェントは、サブスクリプションの作成スケジュールに合わせて実行するよう指定するか、コマンド プロンプトから必要に応じて実行することができます。

SQL Server 7.0 を実行するサブスクライバ用のサブスクリプションを作成すると、Management Studio とレプリケーション モニタに表示されます。サブスクリプションとパブリケーションの作成方法およびエージェントの実行方法については、SQL Server 7.0 Books Online を参照してください。

SQL Server 2005 のディストリビュータと SQL Server 2000 を実行するパブリッシャの使用

SQL Server 2005 は、SQL Server 2000 を実行するパブリッシャのリモート ディストリビュータとして使用できます。この場合、エージェント プロパティを変更するには、ディストリビュータで次のストアド プロシージャを実行します。これらのプロシージャを使用すると、SQL Server 2005 で新しく採用されたプロパティを変更できるようになります。

パブリッシャとディストリビュータが SQL Server 2000 を実行する場合は、sp_changedistpublishersp_changesubscriber を使用して、エージェントが接続を行う際に使用する資格情報を変更できます。ただし、ディストリビュータを SQL Server 2005 にアップグレードした場合は、これらのプロシージャを使用しても、既存のエージェント ジョブで使用されている資格情報を変更することはできません (これらのプロシージャは、プロシージャの呼び出し後に作成されるエージェント ジョブに影響します)。既存のエージェント ジョブの資格情報を変更するには、前述の 4 つのプロシージャのいずれかを呼び出します。

以前のバージョンと SQL Server 2005 のデータ型のマッピング

SQL Server 2005 では、新たに多数のデータ型が採用されています。SQL Server 2005 ディストリビュータからのプッシュ サブスクリプションを使用する場合は、これらの新しいデータ型がサブスクライバ側の互換データ型とマッピングされます。

SQL Server 2005 のデータ型 SQL Server 2000 または SQL Server 7.0 のデータ型

xml

ntext

CLR ユーザー定義型 (UDT)

image

varchar(max)

text

nvarchar(max)

ntext

varbinary(max)

image

SQL Server の以前のバージョンを実行するサブスクライバに varchar(max) 型、nvarchar(max) 型、varbinary(max) 型、xmlL 型、および CLR ユーザー定義型をレプリケートする場合は、これらの型が適切にマップされていることを確認する必要があります (これは、マージ レプリケーションのアーティクルでは既定で行われます)。これらのデータ型のマッピング動作は、sp_addarticle および sp_addmergearticle のスキーマ オプション 0x200x10000000、および 0x20000000 によって制御されます。スキーマ オプションの設定方法の詳細については、「スキーマ オプションを指定する方法 (SQL Server Management Studio)」および「スキーマ オプションを指定する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

SQL Server 2000 では 2 種類のデータ型が採用されており、これらは SQL Server 7.0 の互換データ型とマッピングされています。SQL Server 2005 または SQL Server 2000 ディストリビュータからのプッシュ サブスクリプションを使用する場合は、これらの新しいデータ型がサブスクライバ側の互換データ型とマッピングされます。

SQL Server 2005 または SQL Server 2000 のデータ型 SQL Server 7.0 のデータ型

SQL_VARIANT

IMAGE

BIGINT

DECIMAL

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

以前のバージョンでレプリケートされたデータベースのバックアップを復元するときは、レプリケーション設定を維持することができます。バックアップを作成したサーバーおよびデータベースと同じ名前のサーバーおよびデータベースに対してバックアップを復元する場合、または、KEEP_REPLICATION オプションを指定した場合は、レプリケーション設定が維持されます。詳細については、「RESTORE (Transact-SQL)」を参照してください。データベースを復元した後、現在の製品レベルでレプリケーションをサポートするには、sp_vupgrade_replication (Transact-SQL) を実行してスキーマとシステム データをアップグレードします。

以前のバージョンで作成したバックアップを復元した場合もレプリケーションは維持されますが、アップグレード オプションとして使用されることはまれです。製品アップグレードの一環として、レプリケートされたデータベースをアップグレードするか、データベースおよびレプリケーション構成を一連のスクリプトを使って再構築するのが一般的です。

マージ パブリケーションの互換性レベル

マージ レプリケーションでは、パブリケーションの互換性レベルを使用して、所定のデータベース内のパブリケーションで使用できる機能を判断します。この値の範囲は、70RTM (Service Pack がインストールされていない SQL Server 7.0) ~ 90RTM です。互換性レベルを指定するには、次のものを使用します。

次の機能では、90RTM 以上の互換性レベルが必要です。

次の機能は、互換性レベルには依存しませんが、SQL Server 2005 に付属のマージ エージェントを必要とします。以前のバージョンの SQL Server 関数を実行するサブスクライバは、この機能が無効になっているかのように動作します。

SQL Server 2005 におけるパブリケーションの互換性レベルの動作

パブリケーションの互換性レベルの動作を理解することは重要です。

  • パブリケーションの互換性レベルは、データベースの互換性レベルとは関係ありません。
  • sp_addmergepublication またはレプリケーション管理オブジェクト (RMO) を使用してパブリケーションを作成する場合は、既定によりパブリケーションの互換性レベルが 80RTM に設定されます。パブリケーションの新規作成ウィザードでパブリケーションを作成する場合は、ウィザードの [サブスクライバの種類] ページで選択したオプションに基づいてパブリケーションの互換性レベルが決定されます。
  • 以前のバージョンの SQL Server では、高い互換性レベルを必要とする機能を有効にすると、パブリケーションの互換性レベルが自動的に引き上げられました。SQL Server 2005 では、パブリケーションの互換性レベルを手動で 90RTM に設定してから、その互換性レベルを必要とする機能を有効にする必要があります。
    SQL Server 7.0 からパブリッシャをアップグレードした後、互換性レベル 80RTM を必要とする機能を 1 つ以上選択すると、互換性レベルが自動的に引き上げられます。
  • パブリケーションの互換性レベルを下げることができるのは、スナップショット エージェントが起動しておらず、かつパブリケーションへのサブスクリプションが存在しない場合のみです。
  • 同一データベース内のパブリケーションはすべて、同じ互換性レベルにする必要があります。この要件により、次のような結果になります。
    • 低めの互換性レベル (80RTM など) を持つパブリケーションがデータベースに 1 つ含まれていて、レベル 90RTM の別のパブリケーションを同じデータベースに追加する必要がある場合は、最初のパブリケーションのレベルを手動で引き上げてから、新しいパブリケーションを追加する必要があります。
    • 低めの互換性レベルを持つパブリケーションがデータベースに 2 つ以上含まれていて、レベル 90RTM の別のパブリケーションを同じデータベースに追加する必要がある場合は、既存のパブリケーションを 1 つ残してそれ以外をすべて削除し、残ったパブリケーションのレベルを 90RTM に引き上げ、削除したパブリケーションをレベル 90RTM で再作成してから、レベル 90RTM の新しいパブリケーションを作成する必要があります。

参照

概念

レプリケーションの旧バージョンとの互換性
レプリケートされたデータベースのアップグレード

その他の技術情報

レプリケーションの機能強化

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2007 年 9 月 15 日

新しい内容 :
  • SQL Server のディスク上ストレージ形式が 64 ビット環境でも 32 ビット環境でも同じであるという注意事項を追加しました。

2006 年 4 月 14 日

変更内容 :
  • 同じレプリケーション トポロジで使用できる SQL Server のバージョンを明確に示すために表を追加しました。
  • データ型のマップに使用するスキーマ オプションについての説明を追加しました。
  • SQL Server 7.0 から SQL Server 2005 のインスタンスをリモート ディストリビュータとして使用できるという記述を削除しました。この構成はサポートされていません。