适用于: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的处理方式不同。 这种差异影响了空白值、空字符串和aNULL的表示方式。 这种差异会影响插入到定义了唯一约束的列中的值的处理方式。 例如,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 订阅者无法从备份自动初始化。