Configure Web Synchronization

适用于:SQL Server

SQL Server 合并复制的 Web 同步选项支持使用 HTTPS 协议跨 Internet 复制数据。 若要使用 Web 同步,首先需要执行以下配置操作:

  1. 创建新的域帐户并映射 SQL Server 登录名。

  2. 配置运行 Microsoft Internet Information Services (IIS) 的计算机以同步订阅。

  3. 配置合并发布以允许使用 Web 同步。

  4. 配置一个或多个订阅以使用 Web 同步。

注意

如果您计划复制大量数据或者使用大型数据类型(如 varchar(max)),请阅读本主题中的“复制大量数据”一节。

若要成功设置 Web 同步,您必须决定如何配置安全性以满足您特定的要求和策略。 最好先作出以上决策并创建必要的帐户,然后再尝试配置 IIS、发布和订阅。

在之后的过程中,为简明起见,描述了一个使用本地帐户的简化安全配置。 这个简化的配置适用于 IIS 及 SQL Server 发布服务器和分发服务器同时运行在同一计算机上的安装情况,尽管你更可能对生产环境中的安装使用多服务器拓扑(也是建议做法)。 您可以在这些过程中用域帐户替代本地帐户。

创建新帐户并映射 SQL Server 登录名

SQL Server 复制侦听器 (replisapi.dll) 通过模拟为复制网站所关联的应用程序池指定的帐户来连接发布服务器。

用于 SQL Server 复制侦听器的帐户必须具有合并代理安全性中的“连接发布服务器或分发服务器”一节所述的权限。总之,该帐户必须:

  • 是发布访问列表 (PAL) 的成员。

  • 映射到与发布数据库中的某个用户关联的登录名。

  • 映射到与分发数据库中的某个用户关联的登录名。

  • 对快照共享具有读取权限。

如果是首次使用 SQL Server 复制,你还需要为复制代理创建帐户和登录名。 有关详细信息,请参阅本主题中的“配置发布”和“配置订阅”这两节。

在配置 Web 同步前,建议您先阅读本主题中的“Web 同步的最佳安全配置”一节。 有关 Web 同步安全性的详细信息,请参阅 Security Architecture for Web Synchronization

配置正在运行 IIS 的计算机

Web 同步要求安装并配置 IIS。 在配置发布以使用 Web 同步之前,您需要了解复制网站的 URL。

从版本 5.0 开始,IIS 中支持 Web 同步。 IIS 版本 7.0 不支持配置 Web 同步向导。 从 SQL Server 2012 开始,要使用 IIS 服务器上的 Web 同步组件,我们建议用户随复制安装 SQL Server。 这可以是免费的 SQL Server Express 版本。

必须配置 TLS,才能进行 Web 同步。 您将需要由证书颁发机构颁发的安全证书。 仅出于测试目的,可以使用自行颁发的安全证书。

配置 IIS 以实现 Web 同步

创建 Web 园

SQL Server 复制侦听器支持每个线程处理两个并发同步操作。 超出此限制可能导致复制侦听器停止响应。 为 replisapi.dll 分配的线程数由应用程序池的 Maximum Worker Processes 属性来确定。 默认情况下,此属性设置为 1。

您可以通过增大 Maximum Worker Process 属性值来支持每个 CPU 处理更多的并发同步操作。 通过增大每个 CPU 的工作进程数进行扩展的方式被称为创建“Web 园”。

创建 Web 园将允许同时有两个以上的订阅服务器进行同步。 但这也会增加 replisapi.dll 对 CPU 的占用,从而给服务器总体性能带来负面影响。 所以在选择 Maximum Worker Processes 的值时务须权衡考虑以上两个方面。

在 IIS 7 中增加最大工作进程数

  1. “Internet 信息服务(IIS)管理器”中,展开本地服务器节点,然后单击 “应用程序池” 节点。

  2. 选择与 Web 同步站点关联的应用程序池,然后单击 “操作” 窗格上的 “高级设置”

  3. 在“高级设置”对话框的 “处理模型” 标题下,单击标为 “最大工作线程数”的行。 更改属性值,然后单击 “确定”

配置发布

若要使用 Web 同步,需要创建一个发布(就像为标准合并拓扑创建发布一样)。 有关详细信息,请参阅发布数据和数据库对象

创建发布后,启用允许通过以下方法之一(SQL Server Management Studio、Transact-SQL 或复制管理对象 (RMO))进行 Web 同步的选项。 若要启用 Web 同步,需要为订阅服务器连接提供 Web 服务器地址。

如果您是首次使用发布服务器,还必须配置分发服务器和快照共享。 每台订阅服务器中的合并代理都必须对快照共享具有读取权限。 有关详细信息,请参阅配置分发保护快照文件夹的安全

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 到 4GB。 值以 KB 指定。 将此参数设置为高值并不保证您能够同步该数量的数据。 有效限制值受订阅服务器计算机上的可用连续内存量约束。 如果您的值必须大于 100 MB,建议您递增该值,并且使用订阅服务器上的典型工作负荷来测试内存占用。

XML 文件的最大大小为 4 GB,但复制会成批地同步该文件的更改。 数据和元数据的最大批大小是 25 MB。 必须确保每批的数据不超过大约 20 MB,20 MB 足以容纳元数据和任何其他开销。 此限制具有以下含义:

  • 不能复制任何会导致数据和元数据超过 25 MB 的列。 如果要复制的行包含大型数据类型(如 varchar(max)),这可能会引发问题。

  • 如果要复制大量数据,则可能必须调整合并代理的批大小。

合并复制的批大小是用“ 代”度量的,代是指每个项目的变更集。 每批中的代数是使用合并代理的 -DownloadGenerationsPerBatch 和 -UploadGenerationsPerBatch 参数指定的。 有关详细信息,请参阅 Replication Merge Agent

对于大量数据,请为每个批次参数指定一个较小的数字。 我们建议您从值 10 开始,然后基于应用程序需要和性能进行调整。 通常,这些参数在代理配置文件中指定。 有关配置文件的详细信息,请参阅 Replication Agent Profiles

Web 同步的最佳安全配置

在 Web 同步中,有很多与安全相关的设置可供选择。 建议使用以下方法:

  • SQL Server 分发服务器和发布服务器可位于同一台计算机上(这是合并复制的典型安装)。 但是,IIS 应该安装在单独的计算机上。

  • 使用传输层安全性 (TLS)(旧称为“安全套接字层 (SSL)”),对订阅服务器和正在运行 IIS 的计算机之间的连接进行加密。 这对 Web 同步是必需的。

  • 对从订阅服务器到 IIS 的连接使用基本身份验证。 使用基本身份验证,IIS 服务器无需委托,就可以代表订阅服务器与发布服务器/分发服务器建立连接。 如果使用集成身份验证,则必须使用委托。

    注意

    基本身份验证是将凭据传递给 IIS 时所采用的方法。 基本身份验证不会阻止为与 IIS 建立的连接指定 Windows 域帐户。

  • 指定快照代理应以 Windows 域帐户运行,并指定代理应以该帐户建立连接。 (这是默认配置。)指定每个合并代理都应以使用订阅服务器计算机的用户的域帐户运行,并指定代理应以该帐户建立连接。

    有关代理所需权限的详细信息,请参阅 Replication Agent Security Model

  • 在“新建订阅向导”的“Web 服务器信息”页面上指定一个帐户和密码,或者为 sp_addpullsubscription_agent@internet_url@internet_login 参数指定值时,请指定与合并代理使用的域帐户相同的域帐户。 此帐户必须具有对快照共享的读取权限。

  • 每个发布都应对 IIS 使用一个单独的虚拟目录。

  • 运行 SQL Server 复制侦听器 (Replisapi.dll) 的帐户也是要在同步期间连接到发布服务器和分发服务器的帐户。 此帐户必须映射到发布服务器和分发服务器上的 SQL 登录帐户。 有关详细信息,请参阅配置 IIS 以实现 Web 同步中的“设置 SQL Server 复制侦听器的权限”一节。

  • 可以使用 FTP 将快照从发布服务器传递到运行 IIS 的计算机。 快照始终使用 HTTPS 从运行 IIS 的计算机传递到订阅服务器。 有关详细信息,请参阅通过 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