用户指南

联编应用程序和实用程序

使用嵌入式 SQL 开发的应用程序必须与它们将处理的数据库进行联编。 在提供了这些功能的平台上,可以使用“命令中心”和“客户机配置辅助程序” 来进行联编。

每个应用程序应该对每个数据库执行一次联编。 在联编期间,为将要执行的每个 SQL 语句都存储了数据库存取方案。 这些存取方案是由应用程序开发人员提供的, 它们包含在联编文件中,该文件是在预编译期间创建。 联编就是主机或 AS/400 数据库服务器处理这些联编文件的过程。有关联编的详情,参考 Application Development Guide

因为 DB2 Connect 提供的一些实用程序是使用嵌入式 SQL 开发的,所以,必须先将这些实用程序与主机或 AS/400 数据库服务器进行联编, 才能用于该系统。若您不使用表 4中列示的 DB2 Connect 实用程序和接口, 则不需要将它们与每个主机或 AS/400 数据库服务器进行联编。在下列文件中包含了这些实用程序所需要的联编文件的列表:

ddcsmvs.lst
用于 MVS 或 OS/390

ddcsvse.lst
用于 VSE

ddcsvm.lst
用于 VM

ddcs400.lst
用于 OS/400

当将这些文件列表的其中一个与数据库进行联编时, 将导致每个单个实用程序都与该数据库进行联编。

若安装了 DB2 Connect 企业版,在 DB2 Connect 实用程序可以用于主机或 AS/400 数据库服务器之前,必须将这些实用程序与每一个主机或 AS/400 数据库服务器联编;并且从每种类型的客户机平台联编一次。

例如,若您具有 10 台 OS/2 客户机、10 台 Windows 客户机和 10 台 AIX 客户机, 它们通过“DB2 Connect 企业版 Window NT 版”服务器与 DB2 通用数据库 OS/390 版相连, 则执行下列操作:

  1. 从其中一个 Windows 客户机联编 ddcsmvs.lst。
  2. 从其中一个 OS/2 客户机联编 ddcsmvs.lst。
  3. 从其中一个 AIX 客户机联编 ddcsmvs.lst。
  4. 从 DB2 Connect 服务器联编 ddcsmvs.lst。
注意:以上假定所有客户机都处于同一服务级别。 若它们不处于同一级别,则可能需要从每个特定服务级别的客户机来进行联编。 若您具有早于 DB2 版本 2.1 的客户机,则参考附录 E, 联编以前版本的客户机的实用程序

除了 DB2 Connect 实用程序之外,其他任何使用嵌入式 SQL 的应用程序还必须与它们想使用的每个数据库进行联编。 当执行未联编的应用程序时,通常都将产生 SQL0805N 错误信息。 您可能想为需要联编的所有应用程序创建一个附加的联编列表文件。

对于您正在联编的每个主机或 AS/400 数据库服务器,执行下列操作:

  1. 确保您对主机或 AS/400 数据库服务器管理系统具有足够的权限:

    MVS 或 OS/390
    需要的权限是:
    • SYSADM 或
    • SYSCTRL 或
    • BINDADD   CREATE IN COLLECTION NULLID
    注意:仅当程序包尚未存在时, BINDADD 和 CREATE IN COLLECTION NULLID 特权才能提供足够的权限。 例如,您正在首次创建程序包的时候。

    若程序包已经存在,并且您正在再次联编它们, 则完成该任务所需要的权限取决于是谁执行了最初的联编。

    A 若最初是您自己执行了联编, 而您正在再次执行联编,则只要您具有上面所列示的任何权限,就将允许您完成联编。

    B 若其他人执行了最初的联编,而您正在执行第二次联编, 则您将必须具有 SYSADM 或 SYSCTRL 权限才能完成联编。 若您只具有 BINDADD 和 CREATE IN COLLECTION NULLID 权限, 则将不允许您完成联编。若您没有 SYSADM 或 SYSCTRL 特权,仍然可以创建程序包。 在此情况下,您将需要对想替代的每个现存程序包都具有 BIND 特权。

    VSE 或 VM
    需要的权限是 DBA 权限。若想在联编命令中使用 GRANT 选项 (以避免为每个 DB2 Connect 程序包单独授予存取权), 则NULLID 用户 ID 必须有权为其他用户授予对下列表的权限:
    • system.syscatalog
    • system.syscolumns
    • system.sysindexes
    • system.systabauth
    • system.syskeycols
    • system.syssynonyms
    • system.syskeys
    • system.syscolauth

    在 VSE 或 VM 系统上,您可以发出:

       grant select on table to nullid with grant option
    

    OS/400
    对 NULLID 集合的 *CHANGE 权限或更高权限。
  2. 发出与下列命令类似的命令:
       db2 connect to DBALIAS user USERID using PASSWORD
       db2 bind path@ddcsmvs.lst blocking all
             sqlerror continue messages ddcsmvs.msg grant public
       db2 connect reset
    

    其中,DBALIASUSERIDPASSWORD 适用于主机或 AS/400 数据库服务器,ddcsmvs.lst 是用于 MVS 的联编列表文件, 而 path 表示该联编列表文件的位置。

    例如,drive:\sqllib\bnd\ 适用于所有 Intel 操作系统, INSTHOME/sqllib/bnd/ 适用于所有 UNIX 操作系统, 其中,drive 表示安装了 DB2 Connect 的逻辑驱动器, INSTHOME 表示 DB2 Connect 实例的主目录。

    可以使用 bind 命令的授权选项来对 PUBLIC 或指定的用户名或组 ID 授予 EXECUTE 特权。 若不使用 bind 命令的授权选项, 则必须逐个执行 GRANT EXECUTE (RUN)。

    要了解联编文件的程序包名, 输入以下命令:

      ddcspkgn @bindfile.lst
    

    例如:

       ddcspkgn @ddcsmvs.lst
    

    可能产生下列输出:

                                                                          
     联编文件                       程序包名
     ------------------------------ ------------------------------        
     f:\sqllib\bnd\db2ajgrt.bnd     SQLAB6D3
                                                                          
    

    表 4显示了 DB2 Connect 的 不同部件所使用的联编文件和程序包名,以供您参考。 在某些情况下,在不同的操作系统上使用不同的联编文件和程序包。


    表 4. 联编文件和程序包
    部件 联编文件 程序包 MVS 或 OS/390 VSE VM OS/400
    (GRANT 联编选项使用的)联编程序 db2ajgrt.bnd sqlabxxx
    DB2 调用层接口
    隔离级别 CS db2clics.bnd sqll1xxx
    隔离级别 RR db2clirr.bnd sqll2xxx
    隔离级别 UR db2cliur.bnd sqll3xxx
    隔离级别 RS db2clirs.bnd sqll4xxx
    隔离级别 NC db2clinc.bnd sqll5xxx
    使用 MVS 表名 db2clims.bnd sqll7xxx
    使用 OS/400 表名(OS/400 3.1 或更高版本) db2clias.bnd sqllaxxx
    使用 VSE/VM 表名 db2clivm.bnd sqll8xxx
    命令行处理器
    隔离级别 CS db2clpcs.bnd sqlc2xxx
    隔离级别 RR db2clprr.bnd sqlc3xxx
    隔离级别 UR db2clpur.bnd sqlc4xxx
    隔离级别 RS db2clprs.bnd sqlc5xxx
    隔离级别 NC db2clpnc.bnd sqlc6xxx
    REXX
    隔离级别 CS db2arxcs.bnd sqla1xxx
    隔离级别 RR db2arxrr.bnd sqla2xxx
    隔离级别 UR db2arxur.bnd sqla3xxx
    隔离级别 RS db2arxrs.bnd sqla4xxx
    隔离级别 NC db2arxnc.bnd sqla5xxx
    实用程序
    调出 db2uexpm.bnd sqlubxxx
    调入 db2uimpm.bnd sqlufxxx

    要确定 DB2 Connect 的这些值, 执行 ddcspkgn 实用程序,例如:

       ddcspkgn @ddcsmvs.lst
    

    另外,此实用程序可用来确定个别联编文件的程序包名,例如:

       ddcspkgn bindfile.bnd
    

    若 DB2 MVS/ESA 版系统安装了 APAR PN60988 的修订版 (或者是比版本 3 发行版 1 更新的发行版), 则还可以将隔离级别 NC 的联编文件添加到 ddcsmvs.lst 文件中。

    有关联编选项的详情,参考 Command Reference

    记录:

    1. 必需使用联编选项 sqlerror continue; 然而,当使用 DB2 工具或命令行处理器来联编应用程序时将自动为您指定此选项。 指定了此选项,将把联编错误转换为警告,因此, 联编一个包含错误的文件时仍然可以创建程序包。同样,这允许对多个服务器使用一个联编文件, 即使特定的服务器实现可能将另一个实现的 SQL 语法标记为无效。 因此,在对任何特定的主机或 AS/400 数据库服务器联编任何列表文件 ddcsxxx.lst 时,可能会产生一些警告。 例如,当对 DB2 VM 版进行联编时, 可能会产生许多警告信息,因为 DB2 VM 版不允许将游标声明为 "WITH HOLD"

    2. 若您正在通过 DB2 Connect 连接至 DB2 通用数据库数据库, 则使用联编列表 db2ubind.lst,并且不指定 sqlerror continue, 它仅在连接至主机或 AS/400 数据库服务器时才有效。 另外,要连接至 DB2 通用数据库数据库,我们建议您使用 DB2(而不是 DB2 Connect)提供的 DB2 客户机。
  3. 使用类似的语句来联编每个应用程序或应用程序列表。
  4. 若您具有 DB2 先前发行版的远程客户机, 则可能需要将这些客户机上的实用程序与 DB2 Connect 进行联编。参见附录 E, 联编以前版本的客户机的实用程序以获取详情


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]