添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

适用于 SQL Server

SQL Server 支持通过 Microsoft Host Integration Server 包含的 OLE DB 提供程序对 IBM DB2/AS 400、DB2/MVS 和 DB2/通用数据库进行的推送订阅。

配置 IBM DB2 订阅服务器

若要配置 IBM DB2 订阅服务器,请按下列步骤进行操作:

  • 在分发服务器上安装最新版本的 DB2 的 Microsoft OLE DB 提供程序:

  • 如果使用的是 SQL Server Enterprise 版本,请在 SQL Server 下载 网页的“相关下载” 部分中,单击指向最新版本的 Microsoft SQL Server 功能包的链接。 在 Microsoft SQL Server Feature Pack (Microsoft SQL Server 功能包)网页中,搜索 Microsoft OLE DB Provider for DB2

  • 如果使用的是 SQL Server Standard 版本,则安装最新版本的 Microsoft Host Integration Services (HIS) 服务器,其中包含了提供程序。

    除安装提供程序外,我们还建议安装数据访问工具(默认情况下随 SQL Server Enterprise 版本的下载包一起安装),下一步骤将使用该工具。 有关安装和使用数据访问工具的详细信息,请参阅访问接口文档或 HIS 文档。

  • 为订阅服务器创建连接字符串。 可以在任何文本编辑器中创建连接字符串,但是建议您使用数据访问工具来创建。 在数据访问工具中创建字符串:

  • 依次单击 “开始” “程序” “Microsoft OLE DB Provider for DB2” “数据访问工具”

  • “数据访问工具” 中,按照步骤提供 DB2 服务器的相关信息。 当使用此工具完成操作后,就创建了一个包含相关连接字符串的通用数据链接 (UDL)(复制实际使用的不是 UDL,而是连接字符串)。

  • 访问连接字符串:右键单击数据访问工具中的 UDL 并选择 “显示连接字符串”

    连接字符串类似于(使用换行符是为了方便阅读):

    Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252;  
    PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL;  
    Default Schema=MY_SCHEMA;Process Binary as Character=False;Derive Parameters=False;Units of Work=RUW;DBMS Platform=DB2/NT;  
    Persist Security Info=False;Connection Pooling=True;  
    

    字符串中的大多数选项都特定于正在配置的 DB2 服务器,但 Process Binary as CharacterDerive Parameters 选项应始终设置为 False。 需要为 Initial Catalog 选项指定值以标识订阅数据库。 创建订阅时将在新建订阅向导中输入该连接字符串。

  • 创建快照或事务发布,为非 SQL Server 订阅服务器启用该发布,然后为订阅服务器创建推送订阅。 有关详细信息,请参阅 为非 SQL Server 订阅服务器创建订阅

  • (可选)为一个或多个项目指定自定义创建脚本。 在发布表时,会为该表创建一个 CREATE TABLE 脚本。 对于非 SQL Server 订阅服务器,该脚本采用 Transact-SQL 方言创建,然后由分发代理转换为更通用的 SQL 方言后应用于订阅服务器。 要指定自定义创建脚本,请修改现有的 Transact-SQL 脚本或创建使用 DB2 SQL 方言的完整脚本;如果创建了 DB2 脚本,请使用 bypass_translation 指令,这样分发代理无需转换脚本即可将其应用于订阅服务器。

    修改脚本的原因很多,但最常见的原因是要更改数据类型映射。 有关详细信息,请参阅本主题的“数据类型映射注意事项”部分。 如果修改 Transact-SQL 脚本,应只限于对数据类型映射进行更改(而且脚本不应包含任何注释)。 如果需要进行重大更改,请创建 DB2 脚本。

    修改项目脚本并将其作为自定义创建脚本提供

  • 为发布生成快照后,定位到该发布的快照文件夹。

  • 找到与项目同名的 .sch 文件,例如 MyArticle.sch

  • 使用记事本或其他文本编辑器打开此文件。

  • 修改此文件并将其保存到其他目录。

  • 执行 sp_changearticle,为 creation_script 属性指定文件路径和文件名。 有关详细信息,请参阅 sp_changearticle (Transact-SQL)

    创建项目脚本并将其作为自定义创建脚本提供

  • 使用 DB2 SQL 方言创建项目脚本。 请确保该文件的第一行为 bypass_translation,并且该行不包含任何其他内容。

  • 执行 sp_changearticle,为 creation_script 属性指定文件路径和文件名。

    除了 Non-SQL Server Subscribers主题中所述注意事项外,在向 DB2 订阅服务器复制时,请考虑以下问题:

  • 每个复制的表的数据和索引都分配到一个 DB2 表空间。 DB2 表空间的页大小决定表空间中表的最大列数和最大行大小。 应确保与复制的表关联的表空间与表的复制列数和最大行大小适当。

  • 如果表中有一个或多个主键列的数据类型为 DECIMAL(32-38, 0-38) 或 NUMERIC(32-38, 0-38),请勿使用事务复制向 DB2 订阅服务器发布表。 事务复制使用主键标识行,这可能会导致失败,因为这些数据类型在订阅服务器上均映射为 VARCHAR(41)。 可以使用快照复制发布包含使用这些数据类型的主键的表。

  • 如果要在订阅服务器上预创建表,而不是让复制创建这些表,请使用“仅支持复制”选项。 有关详细信息,请参阅 初始化事务订阅(不使用快照)中手动初始化订阅。

  • SQL Server 允许使用比 DB2 更长的表名称和列名称:

  • 如果发布数据库中有表的名称长度超过订阅服务器上 DB2 版本所支持的长度,请为 destination_table 项目属性指定一个备用名称。 有关创建发布时设置属性的详细信息,请参阅创建发布定义项目

  • 不能指定备用列名称。 必须确保已发布的表所包含的列名称长度均不超过订阅服务器上 DB2 版本所支持的长度。

    复制到 DB2 订阅服务器时,请考虑下列数据类型映射问题:

  • 在将 SQL Server char、varchar、binary 和 varbinary 分别映射到 DB2 CHAR、VARCHAR、CHAR FOR BIT DATA 和 VARCHAR FOR BIT DATA 时,复制会将 DB2 数据类型的长度设置为与 SQL Server 类型的长度相同。

    这样,只要 DB2 页大小约束足够大,能容纳最大行大小,就可以在订阅服务器上成功创建已生成的表。 请确保用于访问 DB2 数据库的登录帐户具有访问表空间的权限,这些表空间具有足够大小可以存放向 DB2 复制的表。

  • DB2 可以支持最大 32 KB 的 VARCHAR 列,因此可以将某些 SQL Server 大型对象列适当映射到 DB2 VARCHAR 列。 但是,复制用于 DB2 的 OLE DB 提供程序不支持将 SQL Server 大型对象映射到 DB2 大型对象。 因此,在生成的创建脚本中,将 SQL Server text、varchar(max)、ntext 和 nvarchar(max) 列映射到 VARCHAR(0)。 在将脚本应用于订阅服务器之前,必须将长度值 0 更改为一个适当的值。 如果不更改数据类型长度,则当试图在 DB2 订阅服务器上创建表时,DB2 会产生错误 604(错误 604 表示数据类型的精度或长度属性无效)。

    请根据对要复制的源表的了解来确定是否适合将 SQL Server 大型对象映射到可变长度的 DB2 项,并在自定义创建脚本中指定适当的最大长度。 有关指定自定义创建脚本的信息,请参阅本主题中“配置 IBM DB2 订阅服务器”部分的步骤 5。

    DB2 类型的指定长度(与其他列长度组合时)不能超过由为表数据分配的 DB2 表空间限定的最大行大小。

    如果对于某个大型对象列没有适当的映射,请考虑对项目使用列筛选,以避免复制该列。 有关详细信息,请参阅筛选已发布数据

  • 在将 SQL Server nchar 和 nvarchar 复制到 DB2 CHAR 和 VARCHAR 时,复制对 DB2 类型使用的说明符长度与对 SQL Server 类型相同。 但是,数据类型长度对于生成的 DB2 表而言可能太小。

    在某些 DB2 环境中,SQL Server char 数据项并不限于单字节字符,CHAR 或 VARCHAR 项的长度必须考虑到这一点。 如果需要,还必须考虑到“移入” 字符和“移出” 字符。 如果要复制包含 ncharnvarchar 列的表,您可能需要在自定义创建脚本中为数据类型指定更大的最大长度。 有关指定自定义创建脚本的信息,请参阅本主题中“配置 IBM DB2 订阅服务器”部分的步骤 5。

    非 SQL Server 订阅服务器
    Subscribe to Publications

    即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:https://aka.ms/ContentUserFeedback

    提交和查看相关反馈

  •