OLE DB Provider for DB2

Microsoft OLE DB Provider for DB2 是随 Microsoft Host Integration Server 一起分发的,它使得 SQL Server 分布式查询可以查询 DB2 数据库中的数据。

注意注意

有关如何安装和配置 OLE DB 访问接口的信息,请参阅该访问接口附带的文档。

创建链接服务器以访问 DB2 数据库

  1. 在运行 SQL Server 实例的计算机上安装 Host Integration Server 客户端软件,并选择安装 OLE DB Provider for DB2 的选项。

  2. 确定 OLE DB Provider for DB2 访问您要查询的 DB2 数据源时所需的连接字符串。确定连接字符串的最佳方法是使用 Host Integration Server 新 OLE DB 数据源应用程序生成数据链接文件。有关详细信息,请参阅 Microsoft Host Integration Server 文档。

  3. 执行 sp_addlinkedserver 以创建链接服务器,指定 DB2OLEDB 为 provider_name,指定包含您要访问的数据的 DB2 目录名为 catalog,并指定步骤 2 中的连接字符串为 provider_string。

    以下示例显示了如何使用 sp_addlinkedserver 来创建用于访问 DB2 数据库的链接服务器定义:

    EXEC sp_addlinkedserver @server = 'DB2SRV',
       @srvproduct = 'Microsoft OLE DB Provider for DB2',
       @catalog = 'SEATTLE',
       @provider = 'DB2OLEDB',
       @provstr =
         'NetLib=SNA;NetAddr=;NetPort=;RemoteLU=SEATTLE;LocalLU=LOCAL;
          ModeName=QPCSUPP;InitCat=SEATTLE;
          Default Schema=WNW3XX;PkgCol=WNW3XX;TPName=;Commit=YES;
          IsoLvl=NC;AccMode=;CCSID=37;PCCodePage=1252;BinAsChar=NO;
          Data Source=Seattle_WNW3XX'
    
  4. 执行 sp_addlinkedsrvlogin 以创建从 SQL Server 登录到 DB2 登录的登录映射。

    以下示例将 SQL Server 登录名 SQLJoe 映射为了 DB2 登录名 DB2Joe:

    EXEC sp_addlinkedsrvlogin 'DB2SRV', false, 'SQLJoe', 'DB2Joe', 'x894jd03?'
    
    注意注意

    密码未经加密而进行传输。在保存到磁盘的数据源定义和脚本、备份以及日志文件中可能会看到密码。在此类连接中,切勿使用管理员密码。有关特定于环境的安全指南,请咨询您的网络管理员。

完成上述步骤之后,可以将链接服务器的名称 DB2SRV 用作由四个部分组成的名称中的服务器名称,并在 OPENQUERY 函数中用作 linked_server。例如:

SELECT *
FROM DB2SRV.SEATTLE.WNW3XX.DEPARTMENT

或者

SELECT *
FROM OPENQUERY(DB2SRV, 'SELECT * FROM SEATTLE.WNW3XX.EMP_ACT')

当针对 DB2 数据源的分布式查询涉及 NULL 值的比较时,请使用 IS NULL 或 IS NOT NULL,而不使用比较运算符,例如等号 (=)、大于号 (>) 或小于号 (<)。另外,INSERT 语句应为表中的所有列提供值,即使表中的某些列为 NULL 或具有默认值。