非 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 的处理方式不同。 这种差异影响了空白值、空字符串和a NULL 的表示方式。 这种差异会影响插入到定义了唯一约束的列中的值的处理方式。 例如,Oracle 允许在一个被视为唯一的列中包含多个NULL值,而 SQL Server 只允许在唯一列中放置单个NULL值。

    另一个因素是,当列定义为 NULL 时,如何处理 NOT 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 订阅者无法从备份自动初始化。