非 SQL Server 订阅服务器

适用于SQL Server

下列非 SQL Server 订阅服务器可通过推送订阅来订阅快照和事务发布。 支持所列每个数据库的两个最新版本使用所列 OLE DB 访问接口的最新版本进行订阅。

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

注意

在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

数据库 操作系统 提供程序
Oracle Oracle 支持的所有平台 Oracle OLE DB 访问接口(由 Oracle 提供)
IBM Db2 MVS、AS400、Unix、Linux、Windows(9.x 版除外) Microsoft Host Integration Server (HIS) OLE DB 访问接口

Oracle 版本信息:
SQL Server 支持下列异构场景的事务和快照复制:

  • 将数据从 SQL Server 发布到非 SQL Server 订阅服务器。

  • 将数据发布到 Oracle 以及从 Oracle 发布数据具有以下限制条件:

复制 2016 或更早版本 2017 或更高版本
从 Oracle 复制 仅支持 Oracle 10g 或更早版本 仅支持 Oracle 10g 或更早版本
复制到 Oracle 最高为 Oracle 12c 不支持

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

有关创建 Oracle 和 IBM Db2 订阅的信息,请参阅 Oracle 订阅服务器IBM Db2 订阅服务器

非 SQL Server 订阅服务器的注意事项

在复制到非 SQL Server 订阅服务器时,请牢记下列注意事项:

一般注意事项

  • 复制支持将表和索引视图作为表发布到非 SQL Server 订阅服务器(索引视图无法复制为索引视图)。

  • 在“新建发布向导”中创建发布,然后使用“发布属性”对话框为非 SQL Server 订阅服务器启用此发布,对于非 SQL Server 订阅服务器,不指定订阅数据库中所有对象的所有者,而对于 Microsoft SQL Server 订阅服务器,则将其设置为发布数据库中相应对象的所有者。

  • 如果发布具有 SQL Server 订阅服务器和非 SQL Server 订阅服务器,则在创建 SQL Server 订阅服务器的任何订阅之前,必须为非 SQL Server 订阅服务器启用发布。

  • 默认情况下,由快照代理为非 SQL Server 订阅服务器生成的脚本在 CREATE TABLE 语法中使用不带引号的标识符。 因此,名为“test”的已发布表按“TEST”复制。 若要使用与发布数据库中的表相同的大小写,请使用分发代理的 -QuotedIdentifier 参数。 如果非 SQL Server 订阅服务器中已发布的对象名称(如表、列和约束)包含空格或相应版本数据库中保留的字词,则还必须使用 -QuotedIdentifier 参数。 有关此参数的详细信息,请参阅 复制分发代理

  • 运行分发代理时使用的帐户必须对 OLE DB 访问接口的安装目录具有读权限。

  • 默认情况下,对于非 SQL Server 订阅服务器,分发代理对订阅数据库使用 [(default destination)] 值(分发代理的 -SubscriberDB 参数):

    • 对于 Oracle,一个服务器最多只有一个数据库,因此不必指定数据库。

    • 对于 IBM Db2,在 DB2 连接字符串中指定数据库。 有关详细信息,请参阅 为非 SQL Server 订阅服务器创建订阅

  • 如果 SQL Server 分发服务器运行在 64 位平台上,必须使用相应 OLE DB 提供程序的 64 位版本。

  • 无论发布服务器和订阅服务器中的排序规则/代码页是什么,复制都以 Unicode 格式移动数据。 建议在发布服务器和订阅服务器之间复制时选择一个兼容的排序规则/代码页。

  • 如果在发布中添加或删除项目,必须重新初始化对非 SQL Server 订阅服务器的订阅。

  • 所有非 SQL Server 订阅服务器支持的约束只有:NULL 和 NOT NULL。 主键约束按唯一索引复制。

  • 不同的数据库处理 NULL 值的方式不同,这将影响空白值、空字符串和 NULL 的显示方式, 而显示方式又影响在定义了唯一约束的列中插入值的行为。 例如,Oracle 允许唯一列中有多个 NULL 值,而 SQL Server 仅允许唯一列中存在一个 NULL 值。

    另一个因素是当列被定义为 NOT NULL 时,如何处理 NULL 值、空字符串和空白值。 有关如何为 Oracle 订阅服务器解决此问题的信息,请参阅 Oracle 订阅服务器

  • 删除该订阅时,不从非 SQL Server 订阅服务器中删除与复制有关的元数据(事务序列表)。

符合订阅服务器数据库的要求

  • 已发布的架构和数据必须符合订阅服务器中的数据库的要求。 例如,如果非 SQL Server 数据库的最大行大小比 SQL Server 小,必须确保已发布的架构和数据不超过此大小。

  • 复制到非 SQL Server 订阅服务器的表将采用订阅服务器中的数据库的表命名约定。

  • 非 SQL Server 订阅服务器不支持 DDL。 有关架构更改的详细信息,请参阅对发布数据库进行架构更改

复制功能支持

  • SQL Server 提供了两种订阅类型:推送订阅和请求订阅。 非 SQL Server 订阅服务器必须使用推送订阅,在这种订阅中,分发代理在 SQL Server 分发服务器上运行。

  • SQL Server 提供了两种快照格式:本机 bcp 模式和字母数字模式。 非 SQL Server 订阅服务器需要字母数字模式快照。

  • 非 SQL Server 订阅服务器不能使用即时更新或排队更新订阅,也不能作为对等拓扑中的节点。

  • 非 SQL Server 订阅服务器不能从备份中自动初始化。