所有类型复制的注意事项

本部分介绍了在实现复制之前应考虑的各个方面,如标识列、约束和数据类型。 本主题介绍了影响所有复制类型的各个方面,下列主题提供了其他信息:

除了上面的主题之外,每项复制功能的相应主题还介绍了实现相应功能的相关注意事项。

SQL Server 代理

复制使用称为代理的独立程序执行与跟踪更改和分发数据相关联的任务。 默认情况下,复制代理运行为 SQL Server 代理下计划的作业。 必须运行 SQL Server 代理才能运行作业。 默认情况下,安装完 SQL Server 之后,SQL Server 代理服务处于禁用状态,除非在安装过程中明确选择自动启动该服务。有关启动 SQL Server 代理服务的详细信息,请参阅启动 SQL Server 代理

安全注意事项

请务必了解如何保护复制环境的安全,以保护应用程序中的数据和业务逻辑。 基本上,保护复制环境需要了解身份验证和授权选项、如何正确使用复制筛选功能,以及用于保护复制环境的每个部分(包括分发服务器、发布服务器、订阅服务器和快照文件夹)的具体措施。 有关详细信息,请参阅安全性和保护(复制)

管理注意事项

配置完复制后,了解如何管理复制拓扑十分重要。 有关管理复制最佳方法的信息,请参阅复制管理最佳实践。 本主题介绍了许多不同方面的基本方法方案指南,并提供了获得每个方面详细信息的链接。 除了遵循本主题中介绍的最佳实践指导原则之外,还请仔细阅读常见问题解答主题,以了解常见的问题: 复制管理员常见问题

网络和性能注意事项

很多方面都有要遵循的与性能相关的最佳方法,例如:

  • 服务器和网络硬件

  • 数据库设计

  • 分发服务器配置

  • 发布设计和选项

  • 筛选器设计和用法

  • 订阅选项

  • 快照选项

  • 代理参数

  • 维护

有关详细信息,请参阅性能(复制)

如果通过低速连接进行复制,那么可以自定义复制所涉及的代理的配置文件。 为特定的不同代理配置其配置文件,配置选项也会有所不同。 有关详细信息,请参阅复制代理配置文件慢速网络导致问题

应用初始快照时,网络速度通常是最重要的问题。 增量数据更改的量可能很小,但初始分发的数据量可能很大。 可能的解决方案包括:

在复制拓扑中指定服务器名称

指定参与复制的服务器实例名称时,必须以 SQL Server 已注册的服务器实例名称的格式提供名称。 例如,在命令行中为复制存储过程或复制代理连接设置指定发布服务器或订阅服务器参数时,必须使用 SQL Server 实例名称。 如果 SQL Server 实例的网络名称与注册的实例名称不同,则代理的复制连接不会成功。 如果实例的网络名称与 SQL Server 实例名称不同,请考虑将 SQL Server 实例名称添加为有效的网络名称。 一种设置备用网络名称的方法是将其添加到本地宿主文件中。 默认情况下,本地宿主文件位于 WINDOWS\system32\drivers\etc 或 WINNT\system32\drivers\etc 下。有关详细信息,请参阅 Windows 文档。

例如,如果计算机的名称为 comp1,其 IP 地址为 10.193.17.129,实例名称为 inst1/instname,则将下面的项添加到宿主文件中:

10.193.17.129 inst1

数据完整性

对于允许在订阅服务器上更新的拓扑,必须确保在每个订阅服务器上保持应用程序的完整性。 用于在发布服务器上验证数据更改的所有控件(如约束)都应位于订阅服务器,或者应在应用程序中进行处理。 有关订阅服务器上的复制代理和约束的信息,请参阅使用 NOT FOR REPLICATION 来控制约束、标识和触发器

数据冲突

对于允许在订阅服务器上更新的拓扑,请将应用程序设计为可最大限度地减少冲突。 如果订阅服务器需要读取数据但不需要更新数据,则可以避免冲突。 根据地理位置或业务用途对数据进行逻辑分区,可防止用户更新相同的数据值,从而避免发生冲突。 有关分区数据的详细信息,请参阅筛选已发布数据

大型对象 (LOB) 数据类型

不推荐使用数据类型 text、ntext 和 image。 建议分别使用数据类型 varchar(max)、nvarchar(max) 和 varbinary(max)。 若要使用 text、ntext 和 image 数据类型,请参阅下列主题中的“大型对象 (LOB) 数据类型”部分,以获得详细信息:事务复制的注意事项合并复制的注意事项

非 SQL Server 发布服务器、非 SQL Server 订阅服务器和运行 MicrosoftSQL Server Compact 3.5 SP1 的订阅服务器使用字符模式快照。 如果使用字符模式快照,LOB 类型将转换为 Unicode,这会导致快照文件中的 LOB 数据比发布数据库中的相同数据大四倍。 数据复制到订阅数据库中后,LOB 类型将再次转换,最终结果是与发布数据库中的数据大小相同。

数据类型映射

如果复制拓扑包含早期版本的 SQL Server、SQL Server Compact 3.5 SP1、非 SQL Server 发布服务器或非 SQL Server 订阅服务器,则将在数据库之间映射数据类型。 有关数据类型映射的列表,请参阅:

标识列

若要在多个节点上都有更新的复制拓扑中使用标识列,复制拓扑中的每个节点都必须使用不同范围的标识值,以免出现重复。 复制会在所有发布和订阅类型之间处理标识列,从而允许您手动管理列或通过复制自动管理列。 有关详细信息,请参阅复制标识列

计算列

复制仅将计算列的定义复制到订阅服务器。 订阅服务器上每一行的值都取决于订阅服务器上的数据以及列的计算是否使用不确定性函数。 如果发布服务器和订阅服务器上的数据在给定时点相同,并且计算仅使用确定性函数,则行的计算值就会相同。 如果数据不同或者计算使用一个或多个不确定性函数,则发布服务器和订阅服务器上的值就可能不同。 有关函数确定性的详细信息,请参阅确定性函数和不确定性函数