次の方法で共有


SQL Server 2005 レプリケーションにおける重大な変更

更新 : 2006 年 4 月 14 日

このトピックでは、アプリケーションに影響を与える可能性のあるレプリケーション機能の変更点について説明します。アプリケーションによっては修正が必要になります。

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

あらゆる種類のレプリケーションに影響する重大な変更

以下の変更は、Microsoft SQL Server 2005 のすべてのレプリケーションに適用されます。

変更点 内容

レプリケーション スクリプトに関する変更

レプリケーション エージェントのセキュリティ モデルが Microsoft SQL Server 2000 から変更されました。セキュリティ モデルの詳細については、「レプリケーション エージェントのセキュリティ モデル」を参照してください。SQL Server 2005 の sysadmin 固定サーバー ロールに属しているユーザーが、SQL Server 2000 または SQL Server 7.0 で作成されたレプリケーション スクリプトを実行する場合、そのスクリプトは正常に実行されます。dbo 固定データベース ロールまたはその他のロールのメンバの場合は、スクリプトを正常に実行できません。アップグレードが必要です。スクリプトのアップグレードについては、「レプリケーション スクリプトをアップグレードする方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。sysadmin ロールのメンバが実行するスクリプトについては、アップグレードは必須ではありませんが、セキュリティ強化のメリットを活かすため、アップグレードすることをお勧めします。

レプリケーション エージェントのローカル接続

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

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

ActiveX コントロール

すべての ActiveX コントロールに、スクリプトおよび初期化に対して安全でないことを示すマークが付けられます。

スナップショット エージェント ActiveX コントロールは、SQL Server 2005 では使用できません。代わりに、新しいマネージ スナップショット エージェントを使用してください。詳細については、「SnapshotGenerationAgent」および「初期スナップショットを作成する方法 (RMO プログラミング)」を参照してください。

distributor_admin アカウントのパスワード

パスワードの入力が必須でなかったため、パブリッシャとリモート ディストリビュータ間の信頼関係接続はサポート対象外となりました (SQL Server 2000 Service Pack 3 より前のバージョンでは、信頼関係接続が既定で使用されていました)。リモート ディストリビュータを使用する場合は、SQL Server 2005 にアップグレードする前に、信頼関係接続を非信頼関係接続に変換してください (この問題は、ローカル ディストリビュータを使用するパブリッシャには影響しません)。distributor_admin アカウントの詳細については、「ディストリビュータの保護」を参照してください。

使用する接続の種類を調べるには

  • ディストリビュータで sp_helpdistpublisher (Transact-SQL) を実行します。trusted 列の値が 1 の場合は、非信頼関係接続に変更する必要があります。

非信頼関係接続に変更するには

  1. ディストリビュータで sp_changedistpublisher (Transact-SQL) を実行します。その際、@property パラメータの値を "trusted"、@value パラメータの値を "False" に指定します。
    ms143470.note(ja-jp,SQL.90).gifメモ :
  2. @password パラメータに強力なパスワードを指定して、パブリッシャとディストリビュータの両方で sp_changedistributor_password (Transact-SQL) を実行します。

SQL Server エージェントが含まれていない SQL Server Express

SQL Server Express にアップグレードする場合、SQL Server Express には SQL Server エージェントが含まれないため、レプリケーション同期を再構成する必要があります。

プル サブスクリプションを使用する場合は、レプリケーション管理オブジェクト (RMO) や Windows 同期マネージャを使用するか、またはコマンド ラインでエージェントを実行して、プル サブスクリプションを同期する必要があります。詳細については、「SQL Server Express へのデータのレプリケート」を参照してください。

引き続き、レプリケーション エージェント ジョブの実行に SQL Server エージェントを使用するには、プッシュ サブスクリプションを使用するか、別のバージョンの SQL Server にアップグレードする必要があります (SQL Server Express と Microsoft SQL Server 2005 Compact Edition を除くすべてのバージョンに SQL Server エージェントが含まれています)。プッシュ サブスクリプションでは、ディストリビューション エージェントまたはマージ エージェントがディストリビュータで実行されるため、SQL Server エージェントを使用できます (SQL Server Express をディストリビュータにすることはできません)。

Microsoft Access (Jet 4.0) サブスクライバ

Jet は Access で使用する基本データベースです。SQL Server 2000 のレプリケーションでは Jet データベースへのサブスクリプションをサポートしていましたが、これらのサブスクリプションはサポートされなくなりました。

代わりに、Microsoft SQL Server 2005 Express Edition を使用することをお勧めします。Access では SQL Server データベースをバックエンドとして使用できます。また、SQL Server データベースはこの問題による影響を受けません。詳細については、「SQL Server Express へのデータのレプリケート」を参照してください。

トランザクション レプリケーションに関する重大な変更

SQL Server 2005 のトランザクション レプリケーションにかかわる重大な変更は次のとおりです。

変更点

内容

キュー更新サブスクリプションの Message Queuing オプション

キュー更新サブスクリプションでは、サブスクライバからの変更内容がキューに書き込まれた後、キュー リーダー エージェントによってそのキューから変更内容が読み取られ、パブリッシャへ配信されます。SQL Server 2000 では、サブスクリプションは SQL Server キューまたは Message Queuing を使用して変更をキューに入れることができました。キューの種類は sp_addpublication (Transact-SQL)@queue_type パラメータで指定され、sqlmsmq の値を使用できましたが、SQL Server 2005 では sql の値しか使用できなくなりました。Message Queuing を使用する既存のパブリケーションは、アップグレード時に SQL Server キューを使用するよう修正されます。使用するアプリケーションが Message Queuing によるキュー更新を必要とする場合は、SQL Server キューに対応するようにこれらのアプリケーションを記述し直す必要があります。キュー更新サブスクリプションの詳細については、「トランザクション レプリケーションの更新可能なサブスクリプション」を参照してください。

SQL Server のアップグレード中に Message Queuing (MSMQ) サービスが実行されている場合、既存の Message Queuing サブスクリプション キューが削除されます。

ms143470.note(ja-jp,SQL.90).gif重要 :

Windows 2000 と Windows XP では、Message Queuing で Microsoft 分散トランザクション コーディネータ (MSDTC) が使用されるため、MSDTC サービスも実行されている必要があります。

Message Queuing サービスが実行されていない場合は、アップグレードの完了後にキューを手動で削除してください。キューの削除方法については、Windows のマニュアルを参照してください。

マージ レプリケーションに関する重大な変更

SQL Server 2005 のマージ レプリケーションにかかわる重大な変更は次のとおりです。

変更点 内容

SQL Server Express からのパブリッシュ

SQL Server MSDE はマージ パブリケーションのパブリッシャとして機能できましたが、MSDE の後継版である SQL Server Express はパブリッシャとして機能することができません。SQL Server Express では、マージ パブリケーション、トランザクション パブリケーション、およびスナップショット パブリケーションへのサブスクライブが可能です。更新サブスクリプションを使用するマージ レプリケーションとトランザクション レプリケーションはどちらも、サブスクライバからパブリッシャに変更内容を伝達できます。SQL Server Express へのレプリケーションの詳細については、「SQL Server Express へのデータのレプリケート」を参照してください。

変更のバッチ化

以前のバージョンの SQL Server では、マージ エージェントによる変更が 1 行単位で実行されていました。SQL Server 2005 では、パフォーマンス向上のために変更がバッチ処理されるため、1 つのステートメント内で複数の行を挿入、更新、または削除できます。パブリケーション データベースまたはサブスクリプション データベースでパブリッシュされたテーブルにトリガがある場合には、トリガによって複数行の挿入、更新、および削除が処理されることを確認してください。詳細については、「DML トリガの複数行に関する注意点」を参照してください。

競合テーブルの再作成

SQL Server 2005 へのアップグレード時には、競合テーブルが、それらの所有者となる DBO で再作成されます。SQL Server 2000 で、これらのテーブルのいずれかを別のユーザーが所有していた場合は、アプリケーションの修正が必要な場合があります。

マージ レプリケーションでは、パブリケーション内のアーティクルごとに競合テーブルが作成され、conflict_PublicationName_ArticleName という形式の名前が付けられます。メタデータ テーブルはすべてアップグレード時に再作成され、競合テーブルはすべて DBO スキーマに作成されます。

新しい ID 範囲の割り当て

ID 範囲の自動管理を使用するテーブルに対しては、アップグレード時にレプリケーションによって新しい ID 範囲が割り当てられる場合があります。パブリッシャよりもサブスクライバに大きな ID 範囲を割り当てるテーブルがある場合は、レプリケーションによって、サブスクライバと同等の範囲がパブリッシャに割り当てられます。

アーティクルごとに使用する範囲を判断するには、パブリケーション データベースで sp_helpmergearticle (Transact-SQL) を実行して、pub_identity_range 列と identity_range 列を確認してください。

参照

概念

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

その他の技術情報

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

ヘルプおよび情報

SQL Server 2005 の参考資料の入手