SQL Server 合并复制的 Web 同步选项通过 Internet 使用 HTTPS 协议启用数据复制。 若要使用 Web 同步,首先需要执行以下配置作:
创建新的域帐户并映射 SQL Server 登录名。
配置运行Microsoft Internet Information Services(IIS)的计算机以同步订阅。
配置合并发布以允许 Web 同步。
配置一个或多个订阅以使用 Web 同步。
注释
如果计划复制大量数据或使用大型数据类型, varchar(max)
请阅读本主题中的“复制大量数据”部分。
若要成功设置 Web 同步,必须决定如何配置安全性以满足特定要求和策略。 最好是在尝试配置 IIS、发布和订阅之前做出这些决策并创建必要的帐户。
在后续过程中,为简洁起见,将介绍使用本地帐户的简化安全配置。 这种简化的配置适用于 IIS 和 SQL Server 发布服务器和分发服务器在同一台计算机上运行的安装,尽管使用多服务器拓扑进行生产安装的可能性更大(并推荐)。 可以在过程中将域帐户替换为本地帐户。
创建新帐户和映射 SQL Server 登录名
SQL Server 复制侦听器(replisapi.dll)通过模拟与复制网站关联的应用程序池指定的帐户连接到发布服务器。
用于 SQL Server 复制侦听器的帐户必须具有 合并代理安全性中所述的权限,在“连接到发布服务器或分发服务器”部分下。总之,帐户必须:
是发布访问列表 (PAL) 的成员。
映射到与发布数据库中的某个用户关联的登录名。
映射到与分发数据库中的某个用户关联的登录名。
对快照共享具有读取权限。
如果这是首次使用 SQL Server 复制,则还需要为复制代理创建帐户和登录名。 有关详细信息,请参阅本主题中的“配置发布”和“配置订阅”部分。
在配置 Web 同步之前,建议阅读本主题中的“Web 同步安全最佳做法”部分。 有关 Web 同步安全性的详细信息,请参阅 Web 同步的安全体系结构。
配置运行 IIS 的计算机
Web 同步要求安装和配置 IIS。 在将发布配置为使用 Web 同步之前,需要复制网站的 URL。
从版本 5.0 开始,IIS 支持 Web 同步。 IIS 版本 7.0 不支持配置 Web 同步向导。 从 SQL Server 2012 开始,若要在 IIS 服务器上使用 Web 同步组件,我们建议用户使用复制安装 SQL Server。 这可以是免费的 SQL Server Express 版本。
Web 同步需要 SSL。 需要证书颁发机构颁发的安全证书。 仅用于测试目的,可以使用自颁发的安全证书。
为 Web 同步配置 IIS
SQL Server Management Studio: 为 Web 同步配置 IIS
SQL Server Management Studio: 为 Web 同步配置 IIS 7
创建 Web 花园
SQL Server 复制侦听器支持每个线程两个并发同步作。 超出此限制可能会导致复制侦听器停止响应。 分配给 replisapi.dll 的线程数由应用程序池 Maximum Worker Process 属性确定。 默认情况下,此属性设置为 1。
可以通过增加最大工作进程属性值,为每个 CPU 支持更多的并发同步作。 通过增加每个 CPU 的工作进程数来横向扩展称为创建“Web 花园”。
Web 园艺将允许两个以上的订阅者同时进行同步。 它还将通过 replisapi.dll增加 CPU 利用率,这可能会对整体服务器性能产生负面影响。 为最大工作进程选择值时,必须平衡这些注意事项。
增加 IIS 7 中的最大工作进程数
在 Internet Information Services (IIS) 管理器中,展开本地服务器节点,然后单击 “应用程序池 ”节点。
选择与 Web 同步网站关联的应用程序池,然后单击“作”窗格上的“高级设置”。
在“高级设置”对话框的 “进程模型 ”标题下,单击标记为 “最大工作进程数”的行。 更改属性值,然后单击“ 确定”。
配置发布
若要使用 Web 同步,请以与标准合并拓扑相同的方式创建发布。 有关详细信息,请参阅 发布数据和数据库对象。
创建发布后,使用以下方法之一启用允许 Web 同步的选项:SQL Server Management Studio、Transact-SQL 或复制管理对象(RMO)。 若要启用 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,以便涵盖元数据和其他开销所需的容量。 此限制具有以下含义:
无法复制导致数据和元数据超过 25 MB 的任何列。 复制包含大型数据类型的行(例如
varchar(max)
)时,这可能是一个问题。如果复制大量数据,可能需要调整合并代理批大小。
合并复制的批大小以代为单位进行度量,其中每代是每篇文章的更改集合。 批处理中代数的指定是通过使用合并代理的 -DownloadGenerationsPerBatch
和 -UploadGenerationsPerBatch
参数实现的。 有关详细信息,请参阅 复制合并代理。
对于大量数据,请为每个批处理参数指定一小部分。 建议从值 10 开始,然后根据应用程序需求和性能进行优化。 通常,这些参数在代理配置文件中指定。 有关配置文件的详细信息,请参阅 复制代理配置文件。
Web 同步的安全最佳做法
Web 同步中有许多与安全相关的设置的选择。 建议采用以下方法:
SQL Server 分发服务器和发布服务器可以位于同一台计算机上(合并复制的典型设置)。 但是,IIS 应安装在单独的计算机上。
使用安全套接字层 (SSL) 加密订阅服务器与运行 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 复制侦听器设置权限”部分。
可以使用 FTP 将快照从发布服务器传送到运行 IIS 的计算机。 快照始终使用 HTTPS 从运行 IIS 的计算机传送到订阅服务器。 有关详细信息,请参阅通过 FTP 传输快照。
如果复制拓扑中的服务器位于防火墙后面,则可能需要打开防火墙中的端口才能启用 Web 同步。
订阅服务器计算机使用 SSL 连接到通过 HTTPS 运行 IIS 的计算机,该计算机通常配置为使用端口 443。 SQL Server Compact 订阅服务器还可以通过 HTTP 进行连接,这通常配置为使用端口 80。
运行 IIS 的计算机通常使用端口 1433(默认实例)连接到发布服务器或分发服务器。 当发布服务器或分发服务器是具有另一个默认实例的服务器上的命名实例时,端口 1500 通常用于连接到命名实例。
如果运行 IIS 的计算机由防火墙与分发服务器分开,并且 FTP 共享用于快照传送,则必须打开用于 FTP 的端口。 有关详细信息,请参阅通过 FTP 传输快照。
重要
打开防火墙的端口可能会使服务器受到恶意攻击。 请确保在打开端口之前了解防火墙系统。 有关详细信息,请参阅 Security Considerations for a SQL Server Installation。