次の方法で共有


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

レプリケーションでは、複数のバージョンの SQL Server にデータをレプリケートできます。このトピックでは、次の項目について説明します。

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

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

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

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

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

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

SQL Server 2008 のレプリケーション トポロジには、SQL Server 2000 と SQL Server 2005 の両方が参加できます。SQL Server 2000 の最小バージョンは Service Pack 3 (SP3) です。SQL Server 2005 の最小バージョンは Service Pack 2 (SP2) です。

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

注意注意

SQL Server のディスク上ストレージ形式は、64 ビット環境でも 32 ビット環境でも同じであるため、レプリケーション トポロジは、32 ビット環境で実行されているサーバー インスタンスと 64 ビット環境で実行されているサーバー インスタンスを組み合わせることができます。

どの種類のレプリケーションでも、ディストリビュータのバージョンがパブリッシャのバージョン以上である必要があります (多くの場合、ディストリビュータはパブリッシャと同じインスタンスです)。

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

マージ レプリケーションの場合、マージ パブリケーションのサブスクライバは、パブリッシャのバージョン以前であればどのバージョンでも使用できます。以前のバージョンに対する互換性の詳細については、このトピックの「マージ パブリケーションの互換性レベル」を参照してください。SQL Server の各種エディションでサポートされるレプリケーション機能の詳細については、「SQL Server 2008 の各エディションがサポートする機能」を参照してください。

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

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

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

以前のバージョンに対する新しいデータ型のマッピング

SQL Server 2008 と SQL Server 2005 は、複数の新しいデータ型をサポートしています。SQL Server 2005 または SQL Server 2008 ディストリビュータからのプッシュ サブスクリプションを使用する場合は、次の表に示すように、これらの新しいデータ型がサブスクライバ側の互換データ型にマッピングされます。SQL Server の以前のバージョンを実行するサブスクライバに新しいデータ型をレプリケートする場合は、そのデータ型が適切にマッピングされていることを確認する必要があります。

SQL Server 2008 のデータ型

SQL Server 2005 のデータ型

SQL Server 2000 のデータ型

共通言語ランタイム ユーザー定義型 (UDT): 8,000 バイト以下

UDT

image

UDT: 8,000 バイト超1

varbinary(max)

image

date2, 3

nvarchar(10)

nvarchar(10)

datetime22, 3

nvarchar(27)

nvarchar(27)

datetimeoffset2, 3

nvarchar(34)

nvarchar(34)

FILESTREAM属性1, 4

varbinary(max)

サポートされていません

geography および geometry1, 3

varbinary(max)

image

hierarchyid1, 5

varbinary(max)

image

nvarchar(max)

nvarchar(max)

ntext

time2, 3

nvarchar(16)

nvarchar(16)

varchar(max)

varchar(max)

text

varbinary(max)

varbinary(max)

image

xml

xml

ntext

1 更新可能なサブスクリプションを含むトランザクション パブリケーションの場合は、UDT、FILESTREAM、geography、geometry、hierarchyid の各型のマッピングがサポートされません。これらの型は、すべての更新サブスクライバが SQL Server 2008 以降のバージョンを実行している場合にのみ使用してください。

2 レプリケーションでは、サブスクライバで挿入されたデータの形式がチェックされません。このため、挿入されたデータが date、datetime2、datetimeoffset、time の各型の列の形式として正しいことをアプリケーションで確認する必要があります。通常、この処理には制約を使用します。データの形式が正しくない場合は、パブリッシャでの挿入が失敗します。

3SQL Server Compact 3.5 サブスクライバは、これらの型をサブスクライバにレプリケートした後に変換します。SQL Server Compact 3.5 のデータ型マッピングの詳細については、SQL Server Compact 3.5 のマニュアルを参照してください。

geography または geometry 型の列を varbinary(max) または image にマップする場合、これらの列の既定の制約をレプリケートすることはできません。この結果は、次のようになります。

4 FILESTREAM は varbinary(max) 列の属性です。レプリケートされたテーブルでの FILESTREAM 列の使用方法については、「FILESTREAM と SQL Server のその他の機能の使用」の「レプリケーション」を参照してください。FILESTREAM 属性を持つ列は、キャラクタ モードのスナップショットを使用するパブリケーションに含めることができません。

5hierarchyid 型の列がサポートされるかどうかは、レプリケーションの種類および使用される SQL Server のバージョンによって決まります。詳細については、「hierarchyid (Transact-SQL)」の「レプリケートされたテーブルでの hierarchyid 列の使用」を参照してください。マージ レプリケーションの場合、パブリケーションの互換性レベルが 100RTM でキャラクタ モードのスナップショットが使用されている場合、hierarchyid が image にマッピングされます。

XML データ型のレプリケート

XML データ型を SQL Server Compact 3.5 SP1 にレプリケートする場合、マージ レプリケーションはそれらの型を Ntext にマップします。SQL Server 2008 の XML データは、UTF-16 エンコード用のプレフィックス バイトを持ちます。これらのバイトは、マージ レプリケーションを使用して SQL Server から SQL Server Compact 3.5 SP1 にレプリケートするときに維持されます。これらのプレフィックス バイトは、SQL Server Compact 3.5 SP1 データベースの Ntext 列を表示したときに、SQL Server Management Studio によって認識されません。したがって、これらのバイトはガベージ文字として表示されます。

SQL Server 2008 の XML スキーマ コレクションは更新されています。このことは、XML スキーマにバインドされた XML 列を SQL Server 2008 から SQL Server 2005 にレプリケートするときに、影響を与えます。

タイムゾーンは、SQL Server 2008 の日付、時刻、および日時の XML スキーマ値では必須ではありません。つまり、SQL Server 2008 パブリッシャ XML 列でタイムゾーンが指定されていない場合、SQL Server 2005 サブスクライバに変更は適用されません。これは、SQL Server 2005 ではタイムゾーンが指定されていることが必須だからです。

SQL Server 2008 パブリッシャの日付、時刻、および日時の XML スキーマ型の値に関するタイムゾーン情報は、SQL Server 2005 の UTC-0 タイムゾーンに変換されます。これは、タイムゾーン インジケータ Z で表されます。

SQL Server 2008 の XML スキーマの日付、時刻、および日時の型は、より長い有効桁数をサポートします。したがって、これらの値は SQL Server 2005 にレプリケートするときに丸められます。

XML スキーマの日付または日時の値を SQL Server 2005 から SQL Server 2008 にレプリケートする場合、負の年を持つ値は SQL Server 2008 でサポートされないため、SQL Server 2008 には適用されません。

このような状況では、レプリケーション エージェントの sp_table_validation メソッドと Validate メソッドが失敗する可能性があります。詳細については、「型指定された XML と型指定されていない XML の比較」の「SQL Server 2005 から SQL Server 2008 への型指定された XML のアップグレード」を参照してください。

圧縮されたデータのパブリッシュ

SQL Server 2008 は、テーブルとインデックスの両方で行とページの両方の圧縮をサポートしています。圧縮されたデータに対するレプリケーションのサポートの詳細については、「圧縮されたテーブルおよびインデックスの作成」の「レプリケーションへの圧縮の影響」を参照してください。

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

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

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

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

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

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

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

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

パブリケーション互換性レベルの動作のうち、考慮が必要なものをいくつか次に示します。

  • パブリケーションの互換性レベルは、データベースの互換性レベルとは関係ありません。

  • sp_addmergepublication またはレプリケーション管理オブジェクト (RMO) を使用してパブリケーションを作成する場合は、パブリケーションの互換性レベルが既定で 80RTM に設定されます。パブリケーションの新規作成ウィザードでパブリケーションを作成する場合は、ウィザードの [サブスクライバの種類] ページで選択したオプションに基づいてパブリケーションの互換性レベルが決定されます。

  • SQL Server 2005 より前のバージョンの SQL Server では、高い互換性レベルを必要とする機能を有効にすると、パブリケーションの互換性レベルが自動的に引き上げられました。SQL Server 2005 以降は、パブリケーションの互換性レベルを手動で 90RTM 以上に設定してから、その互換性レベルを必要とする機能を有効にする必要があります。

  • パブリケーションの互換性レベルを下げることができるのは、スナップショット エージェントが起動しておらず、かつパブリケーションへのサブスクリプションが存在しない場合のみです。

  • 同一データベース内のパブリケーションはすべて、同じ互換性レベルにする必要があります。この要件により、次のような結果になります。

    • 互換性レベルが低い (80RTM など) パブリケーションがデータベースに 1 つ含まれている場合に、レベル 90RTM 以上の別のパブリケーションを同じデータベースに追加するときは、最初のパブリケーションのレベルを手動で引き上げてから、新しいパブリケーションを追加する必要があります。

    • 互換性レベルの低いパブリケーションがデータベースに複数含まれている場合に、レベル 90RTM 以上の別のパブリケーションを同じデータベースに追加するときは、既存のパブリケーションを 1 つ残してそれ以外をすべて削除し、残ったパブリケーションのレベルを 90RTM 以上に引き上げ、削除したパブリケーションをレベル 90RTM 以上で再作成してから、レベル 90RTM 以上の新しいパブリケーションを作成する必要があります。

Web 同期に必要なコンポーネントと互換性レベル

SQL Server 2008 では、SQL Server 2005、SQL Server 2008、および SQL Server Compact 3.5 3.0、3.1、3.5 を実行しているサブスクライバの Web 同期をサポートしています。各種類のサブスクライバに必要なパブリケーションの互換性レベルおよびサーバー コンポーネントを次の表に示します。

パブリッシャのバージョン

サブスクライバのバージョン

必要なパブリケーションの互換性レベル

IIS サーバー上に必要なコンポーネント

SQL Server 2008

SQL Server 2008

100RTM

SQL Server 2008 IIS コンポーネント

SQL Server 2008

SQL Server Compact 3.5 3.0、3.1、および 3.5

90RTM

SQL Server Compact 3.5 SP1 IIS コンポーネントおよび SQL Server 2008 IIS コンポーネント

SQL Server 2008

SQL Server 2005

90RTM

SQL Server 2008 IIS コンポーネント

SQL Server 2005

SQL Server 2005

90RTM

SQL Server 2005 IIS コンポーネント

SQL Server 2005

SQL Server Compact 3.5 3.0、3.1、および 3.5

90RTM

SQL Server Compact 3.5 SP1 IIS コンポーネントおよび SQL Server 2005 IIS コンポーネント

SQL Server 2005

SQL Server 2008

なし1

なし1

1  パブリッシャのバージョンはサブスクライバのバージョン以上であることが必要であるため、この構成はサポートされません。