Configure Web Synchronization
適用対象: SQL Server
SQL Server マージ レプリケーションの Web 同期オプションを使用すると、インターネット経由で HTTPS プロトコルを使用してデータをレプリケートできます。 Web 同期を使用するには、最初に次の構成操作を実行する必要があります。
新しいドメイン アカウントを作成し、SQL Server ログインをマップします。
インターネット インフォメーション サービス (IIS) を実行しているコンピューターで、サブスクリプションが同期されるように構成します。
Web 同期が許可されるようにマージ パブリケーションを構成します。
Web 同期が使用されるように 1 つ以上のサブスクリプションを構成します。
Note
大量のデータや varchar(max)などのサイズの大きなデータ型を含むデータをレプリケートする場合は、このトピックの「大量のデータのレプリケート」を参照してください。
Web 同期を正しく設定するには、特定の要件やポリシーを満たすためにセキュリティをどのように構成するかを決める必要があります。 先にこれらについて決定し、必要なアカウントを作成してから、IIS、パブリケーション、およびサブスクリプションの構成を開始することをお勧めします。
以降の手順では、説明を簡単にするために、ローカル アカウントを使用した場合の簡素化されたセキュリティ構成について説明します。 この簡素化された構成は、IIS と SQL Server のパブリッシャーおよびディストリビューターの両方を同一のコンピューターで実行する環境に適しています。ただし、運用環境ではマルチサーバー トポロジを使用する可能性が高く、その方がお勧めです。 この手順のローカル アカウントは、ドメイン アカウントに置き換えることもできます。
新しいアカウントの作成と SQL Server ログインのマッピング
SQL Server レプリケーション リスナー (replisapi.dll) は、レプリケーション Web サイトに関連付けられたアプリケーション プールに指定されているアカウントを借用することでパブリッシャーに接続します。
SQL Server レプリケーション リスナーに使用するアカウントには、マージ エージェント セキュリティの「パブリッシャーまたはディストリビューターへの接続」で説明されている権限が必要です。
パブリケーション アクセス リスト (PAL) のメンバーである。
パブリケーション データベースのユーザーに関連付けられたログインにマップされている。
ディストリビューション データベース内のユーザーに関連付けられているログインにマップされている。
スナップショット共有の読み取り権限を持つ。
SQL Server レプリケーションを初めて使用する場合は、レプリケーション エージェントのアカウントとログインも作成する必要があります。 詳細については、このトピックの「パブリケーションの構成」および「サブスクリプションの構成」を参照してください。
Web 同期を構成する前に、このトピックの「Web 同期のセキュリティの推奨事項」を一読することをお勧めします。 Web 同期のセキュリティの詳細については、「 Security Architecture for Web Synchronization」を参照してください。
IIS を実行しているコンピューターの構成
Web 同期を使用するには、IIS をインストールして構成する必要があります。 レプリケーション Web サイトの URL がないと、Web 同期を使用するようにパブリケーションを構成できません。
Web 同期は、バージョン 5.0 以降の IIS でサポートされます。 IIS 7.0 では、Web 同期の構成ウィザードはサポートされていません。 SQL Server 2012 以降では、IIS サーバーで Web 同期コンポーネントを使用する場合は、レプリケーションとともに SQL Server をインストールすることをお勧めします。 これは無料の SQL Server Express edition で構いません。
Web 同期には TLS が必要です。 証明機関によって発行されたセキュリティ証明書が必要になります。 テストだけが目的の場合は、独自に発行したセキュリティ証明書を使用できます。
Web 同期用に IIS を構成するには
SQL Server Management Studio: Web 同期用に IIS を構成する
SQL Server Management Studio: Web 同期用に IIS 7 を構成する
Web ガーデンの作成
SQL Server レプリケーション リスナーでは、スレッドごとに同時に 2 つの同期処理がサポートされます。 この制限を超えると、レプリケーション リスナーが応答しなくなる可能性があります。 replisapi.dll に割り当てられるスレッドの数は、アプリケーション プールの "ワーカー プロセスの最大数" プロパティで決まります。 既定では、このプロパティは 1 に設定されます。
1 つの CPU で同時にサポートできる同期処理の数を増やすには、"ワーカー プロセスの最大数" プロパティの値を大きくします。 CPU ごとのワーカー プロセスの数を増やしてスケールアウトすることを、"Web ガーデン" を作成するといいます。
Web ガーデンを作成すると、同時に 3 つ以上のサブスクライバーを同期できるようになります。 このとき、replisapi.dll による CPU 使用率も増加するため、サーバーの全体的なパフォーマンスは低下することがあります。 "ワーカー プロセスの最大数" の値を選択するときは、それらのバランスを考慮することが重要です。
IIS 7 のワーカー プロセスの最大数を増やすには
インターネット インフォメーション サービス (IIS) マネージャーで、ローカル サーバーのノードを展開し、 [アプリケーション プール] ノードをクリックします。
Web 同期サイトに関連付けられているアプリケーション プールを選択し、 [アクション] ペインの [詳細設定] をクリックします。
[詳細設定] ダイアログで、 [モデルの処理] という見出しの下にある [ワーカー プロセスの最大数]というラベルの行をクリックします。 プロパティの値を変更し、 [OK]をクリックします。
パブリケーションの構成
Web 同期を使用するには、標準のマージ トポロジと同じ方法でパブリケーションを作成します。 詳細については、「Publish Data and Database Objects」(データとデータベース オブジェクトのパブリッシュ) をご覧ください。
パブリケーションを作成した後、SQL Server Management Studio,、Transact-SQL、レプリケーション管理オブジェクト (RMO) のいずれかを使用して、Web 同期を許可するオプションを有効にします。 Web 同期を有効にするには、サブスクライバー接続の Web サーバー アドレスを指定する必要があります。
初めてパブリッシャーを使用している場合は、ディストリビューターおよびスナップショット共有も構成する必要があります。 各サブスクライバー側のマージ エージェントには、スナップショット共有の読み取り権限が必要です。 詳細については、「Configure Distribution」(ディストリビューションの構成) と「Secure the Snapshot Folder」(スナップショット フォルダーのセキュリティ保護) をご覧ください。
gen は、websync xml ファイルの予約語です。 genという名前の列を含むテーブルをパブリッシュしようとしないでください。
サブスクリプションの構成
パブリケーションを有効にし、IIS を構成した後、プル サブスクリプションを作成し、そのプル サブスクリプションが IIS を使用して同期するように指定します。 (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 パラメーターを使用して指定します。 詳細については、「 Replication Merge Agent」を参照してください。
大量のデータを扱う場合は、バッチ処理の各パラメーターに小さい数を指定します。 最初は値を 10 にして、アプリケーションのニーズとパフォーマンスに応じて調整することをお勧めします。 通常、これらのパラメーターは、エージェント プロファイルで指定します。 プロファイルの詳細については、「 Replication Agent Profiles」を参照してください。
Web 同期のセキュリティの推奨事項
Web 同期にはセキュリティ関連の選択項目が多数あります。 次の方法が推奨されます。
SQL Server ディストリビューターおよびパブリッシャーは、同じコンピューター上に存在できます (マージ レプリケーションの一般的なセットアップ)。 ただし、IIS は別のコンピューターにインストールする必要があります。
トランスポート層セキュリティ (TLS) (旧称 Secure Sockets Layer (SSL)) を使用して、IIS を実行しているコンピューターとサブスクライバーとの間の接続を暗号化します。 これは、Web 同期では必須です。
サブスクライバーから IIS までの接続に基本認証を使用します。 基本認証を使用すると、IIS では、委任を必要とすることなくサブスクライバーの代わりにパブリッシャーやディストリビューターに接続できます。 統合認証を使用する場合は、委任が必要です。
Note
基本認証は、資格情報を IIS に渡すための方法です。 基本認証を使用しても、IIS への接続に Windows ドメイン アカウントを指定する機能には影響ありません。
スナップショット エージェントを Windows ドメイン アカウントで実行するように指定し、エージェントがそのアカウントとして接続を確立するように指定します (これはきていの構成です) 各マージ エージェントを、サブスクライバー コンピューターを使用するユーザーのドメイン アカウントで実行するように指定し、エージェントがそのアカウントとして接続を確立するように指定します。
エージェントに必要な権限の詳細については、「 Replication Agent Security Model」を参照してください。
サブスクリプションの新規作成ウィザードの [Web サーバー情報] ページでアカウントとパスワードを指定するとき、または sp_addpullsubscription_agent の
@internet_url
および@internet_login
パラメーターの値を指定するときに、マージ エージェントで使用されるドメイン アカウントと同じアカウントを指定します。 このアカウントには、スナップショット共有の読み取り権限が必要です。各パブリケーションでは、IIS 用に個別の仮想ディレクトリを使用する必要があります。
SQL Server レプリケーション リスナー (Replisapi.dll) の実行に使用するアカウントは、同期の際にパブリッシャーとディストリビューターに接続するアカウントでもあります。 したがって、パブリッシャーとディストリビューターで SQL ログイン アカウントにマップされている必要があります。 詳細については、「Configure IIS for Web Synchronization」(Web 同期用の IIS の構成) の「Setting Permissions for the SQL Server Replication Listener」(SQL Server レプリケーション リスナーの権限の設定) セクションをご覧ください。
IIS を実行しているコンピューターにパブリッシャーからスナップショットを配信するときに、FTP を使用できます。 IIS を実行しているコンピューターからサブスクライバーにスナップショットを配信するときには、常に HTTPS が使用されます。 詳細については、「FTP によるスナップショットの転送」を参照してください。
レプリケーション トポロジ内のサーバーがファイアウォールの内側にあるとき、Web 同期を有効にするために、ファイアウォールのポートを開くことが必要になる場合があります。
サブスクライバー コンピューターは、TLS を使用する HTTPS (通常はポート 443 を使用するように構成されます) 経由で、IIS を実行しているコンピューターに接続します。 SQL Server Compact サブスクライバーは、HTTP (通常はポート 80 を使用するように構成されます) 経由の接続を実行することもできます。
通常、IIS を実行しているコンピューターは、ポート 1433 (既定のインスタンス用) を使用してパブリッシャーまたはディストリビューターに接続します。 パブリッシャーまたはディストリビューターが、サーバー上の既定のインスタンスとは別に存在する名前付きインスタンスである場合、その名前付きインスタンスへの接続には通常はポート 1500 が使用されます。
IIS を実行しているコンピューターがファイアウォールによってディストリビューターから分離されており、スナップショットの配信に FTP 共有が使用される場合は、FTP 用のポートが開かれている必要があります。 詳細については、「FTP によるスナップショットの転送」を参照してください。
重要
ファイアウォールのポートを開くと、サーバーが攻撃を受けやすくなります。 ポートを開く前に、ファイアウォール システムについて理解しておいてください。 詳細については、「 Security Considerations for a SQL Server Installation」を参照してください。