次の方法で共有


SQL Server 2005 レプリケーションの動作の変更

更新 : 2006 年 4 月 14 日

このトピックでは、Microsoft SQL Server 2000 に備わっているレプリケーション機能の動作変更について説明します。レプリケーション機能の強化の詳細については、「レプリケーションの機能強化」を参照してください。

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

あらゆる種類のレプリケーションに影響を与える動作の変更

次の変更はすべての種類のレプリケーションに影響を与えます。

機能 説明

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

SQL Server の以前のバージョンでは、既定で、エージェントは SQL Server エージェント サービス アカウントのコンテキストの下で実行されました。Microsoft SQL Server 2005 では、レプリケーション エージェントがデータベースなど他のリソースへの Microsoft Windows の統合された接続を実行および作成する各アカウントに対して細かい単位の制御が可能であり、エージェントごとに異なるアカウントを指定できます。詳細については、「レプリケーションのセキュリティに関する注意点」および「レプリケーション エージェントのセキュリティ モデル」を参照してください。この変更がアップグレードに与える影響については、「レプリケートされたデータベースのアップグレード」の「新しいレプリケーション エージェントのセキュリティ モデル」および「SQL Server 2005 レプリケーションにおける重大な変更」を参照してください。

Windows 同期マネージャ

SQL Server の以前のバージョンでは、同期マネージャとサブスクリプションの同期を取る機能が既定で有効になっていました。SQL Server 2005 で同期マネージャを使用する場合は、このオプションを明示的に有効にする必要があります。詳細については、「Windows 同期マネージャを使用してサブスクリプションを同期する方法 (Windows 同期マネージャ)」を参照してください。

レプリケーション競合表示モジュール

SQL Server 2000 では、レプリケーション競合表示モジュールは、再配布用にパッケージされていました。SQL Server 2005 では、この表示モジュールは個別にパッケージされていません。レプリケーション競合表示モジュールをアプリケーションに含めるには、アプリケーションの配置先のコンピュータに Microsoft .NET Framework 2.0 をインストールし、そのコンピュータに各種のファイルをコピーする必要があります。詳細については、アップグレード アドバイザの「レプリケーションのアップグレードに関するその他の問題」を参照してください。アップグレード アドバイザの詳細については、「アップグレード アドバイザを使用したアップグレードの準備」を参照してください。

スキーマ オプションの変更

スキーマ オプションを使用すると、テーブルに関連付けられている属性やオブジェクト (インデックスや制約など) のレプリケート方法を指定できます。SQL Server 2005 では、いくつかのスキーマ オプションの動作が変更されています。この点については、次のセクションで詳しく説明します。

スキーマ オプションの動作変更

次の表は、SQL Server 2005 におけるスキーマ オプションの変更をまとめたものです。

ms143733.note(ja-jp,SQL.90).gifメモ :
SQL Server 2000 で 0x8000 スキーマ オプションが設定されていた場合、このスキーマ オプションは SQL Server 2005 へのアップグレード時に無効化されます。スキーマ オプション 0x10 または 0x40 については、レプリケーション時に作成されるインデックスの数が増えます。つまり、SQL Server 2005 では、SQL Server 2000 より多くのインデックスが作成されます。
オプション このオプションが SQL Server 2000 で設定された場合の動作 このオプションが SQL Server 2005 で設定された場合の動作

0x80

制約またはインデックスを作成します。0x8000 オプションも有効にした場合、主キー制約およびインデックスが作成されます。0x8000 オプションを有効にしなかった場合、主キー列のインデックスだけが作成されます。

サブスクライバ側に主キー制約を作成します。また、インデックスの作成を制御する 0x10 オプションと 0x40 オプションが無効になっていたとしても、制約に関連したすべてのインデックスがレプリケートされます。

0x4000

制約またはインデックスを作成します。0x8000 オプションも有効にした場合、UNIQUE 制約およびインデックスが作成されます。0x8000 オプションを有効にしなかった場合、列のインデックスだけが作成されます。

サブスクライバ側に UNIQUE 制約を作成します。また、インデックスの作成を制御する 0x10 オプションと 0x40 オプションが無効になっていたとしても、制約に関連したインデックスがすべてレプリケートされます。

0x8000

0x80 オプションまたは 0x4000 オプションと組み合わせて指定した場合、主キー制約および UNIQUE 制約が作成されます。いずれのオプションも指定されなかった場合、0x8000 オプションは機能しません。

このオプションは機能しません。

トランザクション レプリケーションの動作の変更

次の変更はトランザクション レプリケーションに影響を与えます。

機能 説明

サブスクライバ オブジェクトの所有権

SQL Server 2005 のパブリケーションの新規作成ウィザードを使用してパブリケーションを作成する場合、既定では、サブスクライバで作成されるオブジェクトの所有者はパブリッシャで対応するオブジェクトの所有者の値になります。以前のリリースでは、サブスクライバでのオブジェクト作成時に所有者は指定されませんでした。既定で、サブスクライバへの接続に使用されたディストリビューション エージェント アカウントに関連付けられた所有者になりました。ストアド プロシージャ sp_addarticle (Transact-SQL) の場合、動作は変更されていません。

更新可能なサブスクリプションのセキュリティ モード

sp_link_publication@security_mode パラメータは、即時更新サブスクリプションのトリガがどのようにパブリッシャで呼び出しを実行するかを指定します。SQL Server 2005 では、このパラメータのオプションは次のとおりです。

  • 0 : SQL Server 認証を使用します。ログイン情報として、ストアド プロシージャで指定したログインとパスワードが使用されます。
  • 1 : サブスクライバで変更を行うユーザーのセキュリティ コンテキスト (SQL Server 認証または Windows 統合認証) を使用します。
  • 2 : 既存のユーザー定義リンク サーバー ログインを使用します。

SQL Server の以前のバージョンでは、オプション 0 を使用して、リンク サーバーではなく、サブスクライバからパブリッシャへの動的なリモート プロシージャ コール (RPC) を指定しました。

マージ レプリケーションの動作の変更

次の変更はマージ レプリケーションに影響を与えます。

機能

説明

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

以前のバージョンの SQL Server では、高い互換性レベルを必要とする機能を有効にすると、互換性レベルが自動的に上がりました。SQL Server 2005 では、互換性レベルを手動で 90RTM に設定してから、その互換性レベルを必要とする機能を有効にする必要があります。詳細については、「レプリケーション トポロジにおける複数バージョンの SQL Server の使用」の「マージ パブリケーションの互換性レベル」セクションを参照してください。

補正アクション

以前のバージョンの SQL Server では、同期中にエラー (制約違反など) が発生すると、補正アクションが行われました。この動作が望ましい場合もありますが、状況によってはって問題となることもあります。たとえば、サブスクライバの不適切な構成が原因でエラーが発生すると、パブリッシャおよびその他すべてのサブスクライバで変更が取り消され、元の状態に戻ります。

SQL Server 2005 では、sp_addmergearticle@compensate_for_errors パラメータを使用して補正アクションを行うかどうかを制御します。False (既定値) に設定すると、補正アクションは無効になります。ただし、エラーはログに記録され、それ以降のマージでは変更が引き続き適用されます。一見、影響を受ける行のデータが収束しないように思えますが、エラーに対処した時点で変更を適用できるようになり、データが収束します。True に設定した場合、同期中、ノードに適用できない変更があると、補正アクションが実行され、他のすべてのノードの変更が元に戻ります。

ms143733.note(ja-jp,SQL.90).gifメモ :

アーティクルの基になるテーブルが別のパブリケーションで既にパブリッシュされている場合、@compensate_for_errors の値は両方のアーティクルで同一にする必要があります。SQL Server 2000 Version 8.00.858 以前のバージョン (Service Pack 3 を含む) を実行しているサブスクライバでのプル サブスクリプションの場合、@compensate_for_errorsFalse に設定されていても補正アクションは行われます。

競合テーブル

以前のバージョンの SQL Server では、マージ レプリケーションは、パブリケーションのテーブル アーティクルごとに conflict_<ArticleName> 形式の名前を持つ 1 つの競合テーブルを作成しました。SQL Server 2005 では、情報は 2 つのテーブルに格納されます。MSmerge_conflicts_info、および MSmerge_conflict_<PublicationName>_<ArticleName> 形式の名前を持つテーブルです。

保有期間に基づくメタデータのクリーンアップ

SQL Server 2005 では、SQL Server 2000 Service Pack 1 で導入された保有期間に基づくメタデータのクリーンアップを使用します。メタデータは次のシステム テーブルから定期的に削除されます。

  • MSmerge_contents
  • MSmerge_tombstone
  • MSmerge_genhistory
  • 変更前イメージ テーブル (存在する場合)。パブリケーションに対して同期の最適化オプション @keep_partition_changes が有効になっている場合、変更前イメージ テーブルが存在します (このオプションについては、次のセクションを参照してください)。

@keep_partition_changes パラメータ

SQL Server の以前のバージョンでは、既定で @keep_partition_changes パラメータが False に設定されました。これは、パブリッシャに格納されるデータが多くなるためです。パブリケーションの互換性レベルが 90RTM 以上であり、@use_partition_groups パラメータが False に設定された場合、このオプションは True に設定されるようになりました。これらのオプションの詳細については、「パラメータ化された行フィルタ」を参照してください。

参照

概念

レプリケーションの旧バージョンとの互換性

その他の技術情報

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

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

新しい内容 :
  • スキーマ オプションの動作変更に関する情報を追加しました。