“DB2 通用数据库”提供了一些 CLI/ODBC 初始化关键字, 它们可用来限制在首次连接数据库后的“信息收集”阶段由初始 API 调用返回的数据量。 这些关键字可通过下列操作来设置:
- DBNAME - TABLETYPE - SCHEMALIST - SYSSCHEMA - CLISCHEMA
除 CLISCHEMA 的信息之外, 其他关键字都在 CLI/ODBC 帮助和 CLI Guide and Reference 中做了说明。此讨论的余下部分仅与 CLISCHEMA 的使用相关。
此处为 CLISCHEMA 的文档说明,它将在适当的时候添加至 CLI Guide and Reference:
db2cli.ini Keyword Syntax: CLISCHEMA = clischema Default Setting: No alternatives specified. DB2 CLI/ODBC Settings Tab: Not present.
CLISCHEMA 选项指示:在发出 DB2 CLI 和“ODBC 目录函数” 调用以获取目录信息时,将不搜索 SYSIBM(或 SYSTEM、QSYS2), 而是搜索替代的模式、表和索引集。
例如,如果指定 CLISCHEMA='SERGE', 则通常引用系统表的内部 CLI/ODBC API 调用将变为引用下列用户表:
- SERGE.TABLES - SERGE.COLUMNS - SERGE.SPECIALCOLUMNS - SERGE.TSTATISTICS - SERGE.PRIMARYKEYS - SERGE.FOREIGNKEYS - SERGE.TABLEPRIVILEGES - SERGE.COLUMNTABLES - SERGE.PROCEDURES - SERGE.PROCEDURESCOLUMNS。
这些用户表必须由数据库管理员在 CLISCHEMA 可使用之前进行构建。
注意: | DataPropagator
提供了对 CLISCHEMA 的支持,使得“数据库管理员”可以用三种可能的方式来执行此任务:
|
提供了一个用来设置 CLISCHEMA 所需的用户表的实用程序, 其格式为先前未归档的“CLI 命令行界面”的 bldschem 支持命令的格式, 其路径为 /samples/cli/db2cli.exe。db2cli.exe 的文档 (不包括 bldschem 支持命令)可在 /samples/cli/INTCLI.DOC 中找到。
例如,要对数据库 SAMPLE 中由模式拥有者(创建者) USERID 拥有的表名 STAFF 构建使用 CLISCHEMA='SERGE' 所需要的用户表集, 您应在发出 db2start 且向 ODBC/CLI 注册数据库后运行以下命令:
db2cli < addstaff.txt
其中 "addstaff.txt" 包含以下脚本:
opt callerror on opt echo on quickc 1 1 sample userid password # # Repeat next line for each table to add. # bldschem 1 SERGE USERID STAFF # # Exit # killenv 1
此脚本将导致表集 SERGE.*(如上所列示的那样)的创建, 并使用表 USERID.STAFF 的系统目录表数据来填充索引。例如,SERGE.TABLES, 对每一个匹配项将用一个新行来填充它。其他的 bldschem 调用将导致对现存的 SERGE.* 表的追加,并替换现有行。
总的说来, bldschem 支持命令的语法为:
bldschem <handle_number> <value_of_CLISCHEMA> <schema_owner> <table_name>其中:
- <handle_number> 应为 1 - <value_of_CLISCHEMA> 应与用 CLISCHEMA 关键字指定的模式名相同 - <schema_owner> 是表的创建者 - <table_name> 可为用户表名、视图、别名、同义词或系统表名。 (允许使用通配符)。
随后,如果您通过 db2cli.exe 来运行下列示例,则您将对前面示例中创建的用户表 SERGE.* 进行追加, 添加反映每一个表(FRED 和 BERT 是表的模式拥有者)的系统目录表中的数据的行。
bldschem 1 SERGE FRED % bldschem 1 SERGE BERT %
随后,当 CLISCHEMA CLI/ODBC 关键字被设置为 SERGE 时,ODBC/CLI 应用程序对 SAMPLE 数据库的处理将引用 SERGE.* 表集,而不是系统目录表。