SQL Server 复制中不推荐使用的功能

本主题介绍 SQL Server 2012 中仍然可用但不推荐使用的复制功能。 按照计划,SQL Server 未来版本将不再具有这些功能。 在新的应用程序中不应使用这些不推荐使用的功能。

SQL Server 2012 中不推荐使用的新项

功能

说明

RMO

不推荐使用 RMO API。 请改用 Transact-SQL 生成新的应用程序

异类复制

不推荐异类复制到非 SQL Server 订阅服务器。 若要移动数据,请创建使用变更数据捕获和 SSIS 的解决方案。

Oracle 发布

不推荐使用 Oracle 发布。 若要移动数据,请创建使用变更数据捕获和 SSIS 的解决方案。

以前版本中不推荐使用的项

影响所有复制类型的不推荐使用的功能

在 SQL Server 2005 或 SQL Server 2008 中不推荐使用以下适用于所有复制类型的功能。

功能

说明

可附加订阅

此功能可在部署大量请求订阅(这在合并复制中很常见)时使用。 建议您使用以下方法,而不是使用可附加订阅:

  • 对于使用参数化筛选器分区的合并发布,建议您使用分区快照,这些分区快照可简化对大量订阅的初始化。

  • 对于未分区的发布,可以使用备份来初始化订阅。

在上述两种情况下,您可以通过编写脚本来自动创建大量的订阅:创建一个订阅;将其编写为脚本;对每个订阅服务器修改该脚本;然后在每个订阅服务器上应用该脚本以创建订阅。 有关详细信息,请参阅编写复制脚本

订阅服务器注册

不推荐使用 sp_addsubscriber 存储过程。 不再要求在发布服务器上显式注册订阅服务器。

SQL 分布式管理对象 (SQL-DMO)

现有代码将继续起作用,但 SQL-DMO 不支持 SQL Server 2005 和 SQL Server 2008 中的新功能。 请改用复制管理对象 (RMO)。 有关详细信息,请参阅复制管理对象概念

使用 sp_repladdcolumn 和 sp_repldropcolumn 的架构更改

不推荐使用存储过程 sp_repladdcolumnsp_repldropcolumn。 请改用架构更改复制。

这些存储过程不能用于添加或删除具有 SQL Server 2005 和更高版本中所引入的数据类型(xml、varchar(max)、nvarchar(max)、varbinary(max))的列,也不能用于添加或删除具有用户定义类型 (UDT)(datetime2、time、datetimeoffset、hierarchyid、geometry 和 geography 类型)的列。

校验和验证

不应使用校验和验证。 请使用二进制校验和验证。 也可以为所有 SQL Server 订阅服务器(包括对来自 Oracle 发布服务器的发布的订阅)使用行计数验证。

添加发布到 Active Directory

不推荐使用 sp_addpublicationsp_addmergepublication 的 @add_to_active_directory 参数向 Active Directory 添加发布。 已不再允许通过在 Active Directory 中查找发布来订阅发布。

-UseInprocLoader 参数

不推荐使用分发代理和合并代理的这一参数,因为它与 XML 数据类型不兼容。 如果不复制 XML 数据,则可以使用此参数。 有关详细信息,请参阅复制分发代理复制合并代理

分发和合并代理中的 PublisherAddress、PublisherNetwork、DistributorNetwork 和 DistributorAddress 参数

这些参数用于指定在连接到发布服务器或分发服务器时所使用的 IP 地址。 由于复制子系统使用服务器名称来验证连接,因此建议您在客户端协议上使用别名将 IP 地址映射到服务器名称,并在代理中使用服务器名称。

¹  不推荐在 SQL Server 2008 中使用。

不推荐使用的事务复制功能

SQL Server 2005 或 SQL Server 2008 中不推荐使用以下事务复制功能。

功能

说明

事务复制的订阅过期

不推荐使用 sp_addpublication 的 @retention 属性。 如果未在最大分发保持期(sp_adddistributiondb 的 @max_distretention 属性)内同步订阅,则其仍将标记为不活动,且必须重新初始化。

对事务发布的“no sync”订阅

如果为 sp_addsubscriptionsp_addpullsubscription 的 @sync_type 参数指定值 none,则订阅将为“no sync”订阅。 如果要指定订阅数据库中已存在必要的架构和数据,则为此参数指定值 replication support only。

ODBC 订阅服务器

对于非 SQL Server 订阅服务器,请改用 OLE-DB。

可转换订阅

此功能可通过存储过程接口使用,但此功能的支持已从用户界面中删除。 使用此功能要求安装 SQL Server 2000 Data Transformation Services (DTS)。 有关详细信息,请参阅 Integration Services 的向后兼容性

分发 ActiveX 控件

此控件使您可以在应用程序中嵌入分发代理。 改用 RMO。 有关详细信息,请参阅同步请求订阅同步推送订阅

复制分发服务器接口

在 SQL Server 2000 中,复制分发服务器接口提供在分发服务器上的分发数据库中存储复制事务的接口。 可用此接口启用从非 SQL Server 数据库发布(需要增加自定义编程以跟踪发布服务器上的更改)。 不推荐使用此功能支持,但现有代码在从 SQL Server 2000 升级的服务器上仍可以使用。 有关详细信息,请参阅 SQL Server 2000 联机丛书中的“复制分发服务器接口引用”。

复制到 Oracle 8 订阅服务器和从 Oracle 8 发布服务器复制¹

¹  不推荐在 SQL Server 2008 中使用。

不推荐使用的合并复制功能

SQL Server 2005 或 SQL Server 2008 中不推荐使用以下合并复制功能。

功能

说明

可选同步伙伴

备用同步伙伴功能使您可以指定订阅服务器可与之同步的备用发布服务器。

在 SQL Server 2005 和 SQL Server 2008 中,建议将合并复制与数据库镜像一起使用,而不是与备用同步伙伴一起使用。 有关详细信息,请参阅数据库镜像和复制 (SQL Server)

对合并发布的“no sync”订阅1

如果为 sp_addmergesubscriptionsp_addmergepullsubscription 的 @sync_type 参数指定值 none,则订阅将为“no sync”订阅。 建议不要将此订阅类型用于合并复制。

合并 ActiveX 控件

此控件使您可以在应用程序中嵌入合并代理。 请改用 RMO。

多列 UPDATE 选项

当合并复制执行更新时,它会更新一个 UPDATE 语句中所有更改的列,并将未更改的列重置为其原始值。 另外,它还可以发出多条 UPDATE 语句,每个已更改的列一条。 多列 UPDATE 语句的效率通常更高。

在 SQL Server 2005 之前的 SQL Server 版本中,建议为 @fast_multicol_updateproc 项目选项指定 false 值以处理多列更新(一条 UPDATE 语句)效率可能较低的情况:

  • 大部分更新涉及少量的列。

  • 未更改列的索引维护量很大,因为这些列在更新发生时被重置。

由于 SQL Server 中的性能提高,不再需要为这些情况设置此选项。

-ParallelUploadDownload 参数

合并代理的这一参数用于同时上载和下载在合并复制会话中进行的更改。 此参数提供性能提升,但由于必须通过网络传输的元数据量过大,因此有些得不偿失。

sp_addmergepublication 中的 @allow_partition_realignment 属性

此参数用于控制在行移出订阅服务器的分区时必须发送到订阅服务器的删除操作。

-ExchangeType 参数

此参数用于控制合并代理是经历上载阶段、下载阶段还是同时经历这两个阶段。 此参数的默认值为 3,也就是既执行上载又执行下载。 由于仅上载功能不复制架构更改或初始化过程,因此我们不建议您执行仅上载功能。 可以通过针对项目使用 @subscriber_upload_options 来实现仅下载功能。 有关详细信息,请参阅 sp_addmergearticle (Transact-SQL)

sp_addmergearticle 中的 @delete_tracking 属性

此属性用于在应当将删除操作向下发送到发布服务器或订阅服务器时停止跟踪删除操作。 可以通过使用 BusinessLogicModule 中的 DeleteHandler 来实现此设置。

逻辑记录¹

此功能用于在单个事务中发送一组相关行。 在多数情况下,使用此功能会大幅增加复制性能开销。

¹  不推荐在 SQL Server 2008 中使用。

请参阅

概念

复制的向后兼容性