Web 同期の構成

SQL Server マージ レプリケーションの Web 同期オプションを使用すると、インターネット経由で HTTPS プロトコルを使用してデータをレプリケートできます。Web 同期を使用するには、最初に次の構成操作を実行する必要があります。

  1. 新しいドメイン アカウントを作成し、SQL Server ログインをマップします。

  2. Microsoft インターネット インフォメーション サービス (IIS) を実行しているコンピューターで、サブスクリプションが同期されるように構成します。

  3. Web 同期が許可されるようにマージ パブリケーションを構成します。

  4. Web 同期が使用されるように 1 つ以上のサブスクリプションを構成します。

注意注意

大量のデータや varchar(max) などのサイズの大きなデータ型を含むデータをレプリケートする場合は、このトピックの「大量のデータのレプリケート」を参照してください。

Web 同期を正しく設定するには、特定の要件やポリシーを満たすためにセキュリティをどのように構成するかを決める必要があります。先にこれらについて決定し、必要なアカウントを作成してから、IIS、パブリケーション、およびサブスクリプションの構成を開始することをお勧めします。

以降の手順では、説明を簡単にするために、ローカル アカウントを使用した場合の簡素化されたセキュリティ構成について説明します。この簡素化された構成は、IIS と SQL Server のパブリッシャーおよびディストリビューターの両方を同一のコンピューターで実行する環境に適しています。ただし、運用環境ではマルチサーバー トポロジを使用する可能性が高く、その方が推奨されます。この手順のローカル アカウントは、ドメイン アカウントに置き換えることもできます。

新しいアカウントの作成と SQL Server ログインのマッピング

SQL Server レプリケーション リスナー (replisapi.dll) は、レプリケーション Web サイトに関連付けられたアプリケーション プールに指定されているアカウントを借用することでパブリッシャーに接続します。

SQL Server レプリケーション リスナーに使用するアカウントには、「[マージ エージェント セキュリティ]」の「パブリッシャーまたはディストリビューターへの接続」で説明されている権限が必要です。このアカウントに必要な権限の概要を以下に示します。

  • パブリケーション アクセス リスト (PAL) のメンバーである。

  • パブリケーション データベースのユーザーに関連付けられたログインにマップされている。

  • ディストリビューション データベース内のユーザーに関連付けられているログインにマップされている。

  • スナップショット共有の読み取り権限を持つ。

SQL Server レプリケーションを初めて使用する場合は、レプリケーション エージェントのアカウントとログインも作成する必要があります。詳細については、このトピックの「パブリケーションの構成」および「サブスクリプションの構成」を参照してください。

Web 同期を構成する前に、このトピックの「Web 同期のセキュリティの推奨事項」を一読することをお勧めします。Web 同期のセキュリティの詳細については、「Web 同期のセキュリティ アーキテクチャ」を参照してください。

IIS を実行しているコンピューターの構成

Web 同期を使用するには、IIS をインストールして構成する必要があります。レプリケーション Web サイトの URL がないと、Web 同期を使用するようにパブリケーションを構成できません。

Web 同期は、IIS 5.0、IIS 6.0、および IIS 7 でサポートされています。IIS 7.0 では、Web 同期の構成ウィザードはサポートされていません。

Web 同期では SSL は必須です。証明機関によって発行されたセキュリティ証明書が必要になります。テストだけが目的の場合は、独自に発行したセキュリティ証明書を使用できます。

IIS 7 で Web 同期を使用するには、レプリケーション コンポーネント (replisapi.dll) を手動でインストールして構成し、レプリケーションで使用する Web サイトを作成して構成する必要があります。

Web 同期用に IIS を構成するには

Web ガーデンの作成

SQL Server レプリケーション リスナーでは、スレッドごとに同時に 2 つの同期処理がサポートされます。この制限を超えると、レプリケーション リスナーが応答しなくなる可能性があります。replisapi.dll に割り当てられるスレッドの数は、アプリケーション プールの "ワーカー プロセスの最大数" プロパティで決まります。既定では、このプロパティは 1 に設定されます。

1 つの CPU で同時にサポートできる同期処理の数を増やすには、"ワーカー プロセスの最大数" プロパティの値を大きくします。CPU ごとのワーカー プロセスの数を増やしてスケールアウトすることを、"Web ガーデン" を作成するといいます。

Web ガーデンを作成すると、同時に 3 つ以上のサブスクライバーを同期できるようになります。このとき、replisapi.dll による CPU 使用率も増加するため、サーバーの全体的なパフォーマンスは低下することがあります。"ワーカー プロセスの最大数" の値を選択するときは、それらのバランスを考慮することが重要です。

IIS 7 のワーカー プロセスの最大数を増やすには

  1. インターネット インフォメーション サービス (IIS) マネージャーで、ローカル サーバーのノードを展開し、[アプリケーション プール] ノードをクリックします。

  2. Web 同期サイトに関連付けられているアプリケーション プールを選択し、[アクション] ペインの [詳細設定] をクリックします。

  3. [詳細設定] ダイアログで、[モデルの処理] という見出しの下にある [ワーカー プロセスの最大数] というラベルの行をクリックします。プロパティの値を変更し、[OK] をクリックします。

パブリケーションの構成

Web 同期を使用するには、標準のマージ トポロジと同じ方法でパブリケーションを作成します。詳細については、「データとデータベース オブジェクトのパブリッシュ」を参照してください。

パブリケーションを作成した後、SQL Server Management Studio、Transact-SQL、レプリケーション管理オブジェクト (RMO) のいずれかを使用して、Web 同期を許可するオプションを有効にします。Web 同期を有効にするには、サブスクライバー接続の Web サーバー アドレスを指定する必要があります。

初めてパブリッシャーを使用している場合は、ディストリビューターおよびスナップショット共有も構成する必要があります。各サブスクライバー側のマージ エージェントには、スナップショット共有の読み取り権限が必要です。詳細については、「ディストリビューションの構成」および「スナップショット フォルダのセキュリティ」を参照してください。

Web 同期を許可するようにパブリケーションを構成するには

サブスクリプションの構成

パブリケーションを有効にし、IIS を構成した後、プル サブスクリプションを作成し、そのプル サブスクリプションが IIS を使用して同期するように指定します (Web 同期はプル サブスクリプションでのみサポートされます)。

Web 同期を使用するようにサブスクリプションを構成するには

以前のバージョンの SQL Server からのアップグレード

既存の構成済み Web 同期トポロジがあるときに、SQL Server をアップグレードする場合は、Replisapi.dll の最新バージョンが、Web 同期で使用される仮想ディレクトリにコピーされていることを確認する必要があります。既定では、Replisapi.dll の最新バージョンは C:\Program Files\Microsoft SQL Server\<nnn>\COM にあります。

大量のデータのレプリケート

サブスクライバー コンピューター上で発生する可能性があるメモリの問題を回避できるように、Web 同期では、変更の転送に使用する XML ファイルに既定の最大サイズの 100 MB を使用します。この制限は、次のレジストリ キーを設定すると生じる場合があります。

HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Microsoft SQL Server\100\Replication

WebSyncMaxXmlSize DWORD 2000000

このキーに許容される値の範囲は 100 MB ~ 4 GB です。値は KB 単位で指定します。このパラメーターに大きな値を設定することで、その量のデータを同期できることが保証されるわけではありません。サブスクライバー コンピューター上で使用できる連続したメモリの量によって制限することが効果的です。100 MB を超える値を設定する必要がある場合は、値を段階的に増加させ、サブスクライバー上の一般的なワークロードでメモリの使用量をテストすることをお勧めします。

XML ファイルの最大サイズが 4 GB でも、バッチ内のそのファイルからの変更がレプリケーションによって同期されます。データとメタデータの最大バッチ サイズは 25 MB です。各バッチ内のデータが約 20 MB を超えないようにする必要があります。この場合、メタデータやその他のオーバーヘッドも考慮に入れます。この制限による影響を次に示します。

  • データとメタデータが 25 MB を超す要因となる列はレプリケートできません。これは、varchar(max) などのサイズの大きなデータ型を含む行をレプリケートするときに問題になる場合があります。

  • 大量のデータをレプリケートする場合に、マージ エージェントのバッチ サイズの調整が必要になることがあります。

マージ レプリケーションのバッチ サイズは、アーティクルごとの変更のコレクションである生成結果で示されます。1 つのバッチ内の生成結果の数は、マージ エージェントの –DownloadGenerationsPerBatch パラメーターと –UploadGenerationsPerBatch パラメーターを使用して指定します。詳細については、「レプリケーション マージ エージェント」を参照してください。

大量のデータを扱う場合は、バッチ処理の各パラメーターに小さい数を指定します。最初は値を 10 にして、アプリケーションのニーズとパフォーマンスに応じて調整することをお勧めします。通常、これらのパラメーターは、エージェント プロファイルで指定します。プロファイルの詳細については、「レプリケーション エージェント プロファイル」を参照してください。

Web 同期のセキュリティの推奨事項

Web 同期にはセキュリティ関連の選択項目が多数あります。次の方法が推奨されます。

  • SQL Server ディストリビューターおよびパブリッシャーは、同じコンピューター上に存在できます (マージ レプリケーションの一般的なセットアップ)。ただし、IIS は別のコンピューターにインストールする必要があります。

  • SSL (Secure Sockets Layer) を使用して、IIS を実行しているコンピューターとサブスクライバーとの間の接続を暗号化します。これは、Web 同期では必須です。

  • サブスクライバーから IIS までの接続に基本認証を使用します。基本認証を使用すると、IIS では、委任を必要とすることなくサブスクライバーの代わりにパブリッシャーやディストリビューターに接続できます。統合認証を使用する場合は、委任が必要です。

    注意注意

    基本認証は、資格情報を IIS に渡すための方法です。基本認証を使用しても、IIS への接続に Windows ドメイン アカウントを指定する機能には影響ありません。

  • スナップショット エージェントを Windows ドメイン アカウントで実行するように指定し、エージェントがそのアカウントとして接続を確立するように指定します (これは既定の構成です)。各マージ エージェントを、サブスクライバー コンピューターを使用するユーザーのドメイン アカウントで実行するように指定し、エージェントがそのアカウントとして接続を確立するように指定します。

    エージェントに必要な権限の詳細については、「レプリケーション エージェントのセキュリティ モデル」を参照してください。

  • サブスクリプションの新規作成ウィザードの [Web サーバー情報] ページでアカウントとパスワードを指定するとき、または sp_addpullsubscription_agent@internet_url および @internet_login パラメーターの値を指定するときに、マージ エージェントが使用するドメイン アカウントと同じアカウントを指定します。このアカウントには、スナップショット共有の読み取り権限が必要です。

  • 各パブリケーションでは、IIS 用に個別の仮想ディレクトリを使用する必要があります。

  • SQL Server レプリケーション リスナー (Replisapi.dll) の実行に使用するアカウントは、同期の際にパブリッシャーとディストリビューターに接続するアカウントでもあります。したがって、パブリッシャーとディストリビューターで SQL ログイン アカウントにマップされている必要があります。詳細については、「Web 同期用に IIS を構成する方法」の「SQL Server レプリケーション リスナーの権限の設定」を参照してください。

  • IIS を実行しているコンピューターにパブリッシャーからスナップショットを配信するときに、FTP を使用できます。IIS を実行しているコンピューターからサブスクライバーにスナップショットを配信するときには、常に HTTPS が使用されます。詳細については、「FTP によるスナップショットの転送」を参照してください。

  • レプリケーション トポロジ内のサーバーがファイアウォールの内側にあるとき、Web 同期を有効にするために、ファイアウォールのポートを開くことが必要になる場合があります。

    • サブスクライバー コンピューターは、SSL を使用する HTTPS (通常はポート 443 を使用するように構成されます) 経由で、IIS を実行しているコンピューターに接続します。SQL Server Compact 3.5 SP1 サブスクライバーは、HTTP (通常はポート 80 を使用するように構成されます) 経由の接続を実行することもできます。

    • 通常、IIS を実行しているコンピューターは、ポート 1433 (既定のインスタンス用) を使用してパブリッシャーまたはディストリビューターに接続します。パブリッシャーまたはディストリビューターが、サーバー上の既定のインスタンスとは別に存在する名前付きインスタンスである場合、その名前付きインスタンスへの接続には通常はポート 1500 が使用されます。

    • IIS を実行しているコンピューターがファイアウォールによってディストリビューターから分離されており、スナップショットの配信に FTP 共有が使用される場合は、FTP 用のポートが開かれている必要があります。詳細については、「FTP によるスナップショットの転送」を参照してください。

重要な注意事項重要

ファイアウォールのポートを開くと、サーバーが攻撃を受けやすくなります。ポートを開く前に、ファイアウォール システムについて理解しておいてください。詳細については、「SQL Server インストールのセキュリティに関する注意点」を参照してください。

変更履歴

変更内容

サポートされる IIS バージョンの一覧に IIS 7.0 を追加しました。

手順の実行順序を変更し、IIS の構成後にパブリケーションを構成するようにしました。

アカウントの作成とログインのマッピングに関するセクションを追加しました。