ウェブ同期の設定

適用対象:SQL Server

SQL Server Merge ReplicationのWeb同期オプションは、インターネット経由でHTTPSプロトコルを用いてデータレプリケーションを可能にします。 ウェブ同期を使用するには、まず以下の設定ステップを行ってください:

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

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

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

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

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

ウェブ同期を成功裏に設定するには、特定の要件やポリシーに合ったセキュリティ設定方法を決める必要があります。 これらの決定を行い、IIS、出版物、サブスクリプションの設定を試みる前に必要なアカウントを作成してください。

以下の手順は、ローカルアカウントを使用する簡略化されたセキュリティ構成について説明します。 この簡略化された構成は、IISとSQL Server Publisher・ディストリビューターの両方が同じコンピュータ上で動作するインストールに適していますが、本番環境ではマルチサーバートポロジーを使う方がはるかに一般的で推奨されています。 この手順のローカル アカウントは、ドメイン アカウントに置き換えることもできます。

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

SQL Serverレプリケーションリスナー(replisapi.dll)は、レプリケーションウェブサイトに関連付けられたアプリケーションプールに指定したアカウントをなりすましてPublisherに接続します。

SQL Server Replication Listenerで使用するアカウントは、「Publisher または Distributorに接続する」セクションのマージ エージェント Securityで説明されている権限が必要です。まとめると、アカウントは以下の条件を満たす必要があります:

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

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

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

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

もし初めてSQL Server Replicationを使うなら、レプリケーションエージェント用のアカウントとログインも作成する必要があります。 詳細については、この記事の「出版の設定」および「購読の設定」セクションをご覧ください。

ウェブ同期を設定する前に、この記事の「Web 同期のためのセキュリティベストプラクティス」セクションをお読みください。 Web 同期のセキュリティの詳細については、「 Security Architecture for Web Synchronization」を参照してください。

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

Web 同期を使用するには、IIS をインストールして構成する必要があります。 公開をWeb同期に設定する前に、レプリケーションのウェブサイトのURLが必要です。

Web 同期は、バージョン 5.0 以降の IIS でサポートされます。 IISバージョン7.0では「ウェブ同期構成ウィザード」はサポートされていません。 SQL Server 2012からは、IISサーバーのWeb syncコンポーネントを使用するには、レプリケーション付きのSQL Serverをインストールしてください。 これは無料の SQL Server Express edition で構いません。

Web 同期には TLS が必要です。 認証機関から発行されるセキュリティ証明書が必要です。 テストだけが目的の場合は、独自に発行したセキュリティ証明書を使用できます。

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

ウェブガーデンの制作

SQL Server レプリケーション リスナーでは、スレッドごとに同時に 2 つの同期処理がサポートされます。 この制限を超えると、レプリケーションリスナーが応答を停止することがあります。 アプリケーションプールのMaximum Worker Processesプロパティは、 replisapi.dllに割り当てられたスレッドの数を決定します。 デフォルトでは、このプロパティは1に設定されています。

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

ウェブガーデニングは、2人以上の加入者が同時に同期できるようにします。 また、CPU利用率を replisapi.dll増加させ、サーバー全体のパフォーマンスに悪影響を及ぼす可能性があります。 最大ワーカープロセスの値を選ぶ際には、これらの考慮点をバランスよく考慮してください。

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

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

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

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

公開の設定

ウェブ同期を使うには、標準的なマージトポロジー出版と同じ方法で出版物を作成します。 詳細については、「Publish Data and Database Objects」(データとデータベース オブジェクトのパブリッシュ) をご覧ください。

出版を作成した後、SQL Server Management Studio、Transact-SQL、またはReplication Management Objects(RMO)のいずれかの方法を使ってウェブ同期を許可するオプションを有効にします。 ウェブ同期を有効にするには、加入者接続用のウェブサーバーアドレスを提供する必要があります。

Publisherを初めて使う場合は、Distributorとスナップショット共有も設定する必要があります。 各サブスクライバー側のマージ エージェントには、スナップショット共有の読み取り権限が必要です。 詳細については、「Configure Distribution」(ディストリビューションの構成) と「Secure the Snapshot Folder」(スナップショット フォルダーのセキュリティ保護) をご覧ください。

gen はwebsync XMLファイル内の保留語です。 gen と名付けられた列を含むテーブルの公開はやめてください。

サブスクリプションの設定

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

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

既存のウェブ同期トポロジーを設定していてSQL Serverをアップグレードする場合は、最新のバージョンのreplisapi.dllがウェブ同期で使用される仮想ディレクトリにコピーされていることを確認してください。 デフォルトでは、 replisapi.dll の最新バージョンは C:\Program Files\Microsoft SQL Server\<nnn>\COMに位置しています。

大量データの複製

サブスクライバーコンピュータでのメモリ問題を防ぐため、ウェブ同期では変更転送に使うXMLファイルのデフォルト最大サイズが100MBです。 以下のレジストリキーを設定して制限を上げる:

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

WebSyncMaxXmlSize DWORD 2000000

このキーの許容値の範囲は100MBから4GBです。 値は KB 単位で指定します。 このパラメータを高く設定しても、その量のデータが同期できる保証はありません。 サブスクライバー コンピューター上で使用できる連続したメモリの量によって制限することが効果的です。 100MBを超える値を要求する場合は、徐々に増やし、サブスクライバーの典型的なワークロードでメモリ消費量をテストしてください。

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

  • データやメタデータが25MBを超える列は複製できません。 この制限は 、varchar(max)のような大きなデータ型を含む行をレプリケートする場合に問題になるかもしれません。

  • 大量のデータを複製する場合は、マージ エージェントのバッチサイズを調整する必要があるかもしれません。

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

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

ウェブ同期のセキュリティベストプラクティス

ウェブ同期は、セキュリティ関連の設定に多くの選択肢を提供します。 次の方法を使用します。

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

  • トランスポート層セキュリティ (TLS) (旧称 Secure Sockets Layer (SSL)) を使用して、IIS を実行しているコンピューターとサブスクライバーとの間の接続を暗号化します。 ウェブ同期にはこの暗号化が必要です。

  • サブスクライバーから IIS までの接続に基本認証を使用します。 Basic Authenticationを使用することで、IISは加入者を代表してPublisher/Distributorと委任することなく接続できます。 統合認証を使用する場合は、委任が必要です。

    基本認証は、資格情報を IIS に渡すための方法です。 基本認証は、IISに接続する際にWindowsドメインアカウントを指定することを妨げません。

  • スナップショット エージェントがWindowsドメインアカウントで動作することを指定し、エージェントがそのアカウントで接続を行うことを指定してください。 (これがデフォルトの構成です。)各マージ エージェントがサブスクライバーコンピュータを使用するユーザーのドメインアカウントの下で動作することを指定し、エージェントがそのアカウントとして接続を行うことを指定してください。

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

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

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

  • SQL Serverレプリケーションリスナー(replisapi.dll)が動作するアカウントは、同期時にPublisherおよびディストリビューターに接続するアカウントでもあります。 このアカウントはPublisher and DistributorのSQL Serverログインアカウントにマッピングする必要があります。 詳細については、「Configure IIS for Web Synchronization」(Web 同期用の IIS の構成) の「Setting Permissions for the SQL Server Replication Listener」(SQL Server レプリケーション リスナーの権限の設定) セクションをご覧ください。

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

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

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

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

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

重要

ファイアウォールのポートを開くと、サーバーが攻撃を受けやすくなります。 ポートを開く前に、ファイアウォール システムについて理解しておいてください。 詳細については、「 Security Considerations for a SQL Server Installation」を参照してください。