SQL Server 复制中不推荐使用的功能
本主题介绍 SQL Server 2008 中仍然可用但不推荐使用的复制功能。按照计划,SQL Server 未来版本将不再具有这些功能。在新的应用程序中不应使用这些不推荐使用的功能。
影响所有复制类型的不推荐使用的功能
在 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_repladdcolumn 和 sp_repldropcolumn。请改用架构更改复制。有关详细信息,请参阅对发布数据库进行架构更改。 这些存储过程不能用于添加或删除具有 SQL Server 2005 和更高版本中所引入的数据类型(xml、varchar(max)、nvarchar(max)、varbinary(max))的列,也不能用于添加或删除具有用户定义类型 (UDT)(datetime2、time、datetimeoffset、hierarchyid、geometry 和 geography 类型)的列。 |
校验和验证 |
不应使用校验和验证。请使用二进制校验和验证。也可以为所有 SQL Server 订阅服务器(包括对来自 Oracle 发布服务器的发布的订阅)使用行计数验证。有关详细信息,请参阅验证已复制的数据。 |
添加发布到 Active Directory |
不推荐使用 sp_addpublication 或 sp_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_addsubscription 或 sp_addpullsubscription 的 @sync_type 参数指定值 none,则订阅将为“no sync”订阅。如果要指定订阅数据库中已存在必要的架构和数据,则请为此参数指定值 replication support only。有关详细信息,请参阅初始化事务订阅(不使用快照)。 |
ODBC 订阅服务器 |
对于非 SQL Server 订阅服务器,请改用 OLE-DB。有关所支持的订阅服务器的信息,请参阅非 SQL Server 订阅服务器。 |
可转换订阅 |
此功能可通过存储过程接口使用,但此功能的支持已从用户界面中删除。使用此功能要求安装 SQL Server 2000 Data Transformation Services (DTS)。有关详细信息,请参阅 Integration Services 的向后兼容性。 |
适用于快照发布和事务发布的可更新订阅(包括立即更新和排队更新)¹ |
建议您改用对等事务复制。有关详细信息,请参阅对等事务复制。 |
分发 ActiveX 控件 |
此控件使您可以在应用程序中嵌入分发代理。改用 RMO。有关详细信息,请参阅如何同步请求订阅(RMO 编程)和如何同步推送订阅(RMO 编程)。 |
复制分发服务器接口 |
在 SQL Server 2000 中,复制分发服务器接口提供在分发服务器上的分发数据库中存储复制事务的接口。可用此接口启用从非 SQL Server 数据库发布(需要增加自定义编程以跟踪发布服务器上的更改)。不推荐使用此功能支持,但现有代码在从 SQL Server 2000 升级的服务器上仍可以使用。有关详细信息,请参阅 SQL Server 2000 联机丛书中的“复制分发服务器接口引用”。 SQL Server 2005 和 SQL Server 2008 支持从 Oracle 数据库发布,无需自定义编程。有关详细信息,请参阅 Oracle 发布概述。 |
复制到 Oracle 8 订阅服务器和从 Oracle 8 发布服务器复制¹ |
有关支持的 Oracle 版本的信息,请参阅 Oracle 发布概述和 Oracle 订阅服务器。 |
¹ 不推荐在 SQL Server 2008 中使用。
不推荐使用的合并复制功能
SQL Server 2005 或 SQL Server 2008 中不推荐使用以下合并复制功能。
功能 |
说明 |
---|---|
可选同步伙伴 |
备用同步伙伴功能使您可以指定订阅服务器可与之同步的备用发布服务器。 在 SQL Server 2005 和 SQL Server 2008 中,建议将合并复制与数据库镜像一起使用,而不是与备用同步伙伴一起使用。有关详细信息,请参阅复制和数据库镜像。 |
对合并发布的“no sync”订阅1 |
如果为 sp_addmergesubscription 或 sp_addmergepullsubscription 的 @sync_type 参数指定值 none,则订阅将为“no sync”订阅。建议不要将此订阅类型用于合并复制。 |
合并 ActiveX 控件 |
此控件使您可以在应用程序中嵌入合并代理。改用 RMO。有关详细信息,请参阅如何同步请求订阅(RMO 编程)或如何同步推送订阅(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 中使用。