许多 DB2 通用数据库 OS/390 版安装能实现资源监控活动, 允许系统管理员将资源使用情况与个别用户存取关联起来。 这可以用来对个别用户或他们的部门所消耗的资源进行收费。 此实践通常称为对方付费记帐。
DB2 Connect 产品允许系统管理员监控那些通过 DB2 Connect 来存取数据库的用户所消耗的大型主机资源。可以使用计帐字符串来将记帐数据从 DB2 Connect 发送到数据库服务器的 DB2 中。 计帐字符串将系统生成的数据和用户提供的数据组合在一起。 此数据允许系统管理员将资源使用情况与每个用户的存取关联起来, 并相应地对用户收费。
计帐字符串是使用 DRDA 参数 PRDDTA 来发送的。 因为此参数的内容不是采用 DRDA 体系结构, 所以,不能保证应用程序服务器将能够识别作为记帐数据的数据。 目前,仅在 MVS 和 OS/390 系统上支持 PRDDTA。 字符串被存储为记帐记录。
计帐字符串由 DB2 Connect 生成的 56 个字节(前缀)、 后接由用户指定的 199 个字节(后缀)组成,最大长度为 255 个字节。
表 3显示了由系统生成的字段。
这些字段中的每一个都用空白将右边填满。
字段名 | 长度 | 说明。 |
---|---|---|
acct_str_len | 1 | 是一个十六进制值,表示计帐字符串的长度减 1。 例如,X'3C'。 |
client_prdid | 8 | 客户机软件的产品 ID。例如, DB2 通用数据库 版本 7 的产品 ID 为 SQL07010。 |
client_platform | 18 | 客户机所采用的平台,例如,AIX、 OS/2、DOS 或 Windows。 |
client_appl_name | 20 | 用户的应用程序名的前 20 个字符,例如,payroll。 |
client_authid | 8 | 用户的应用程序的作者ID,例如,SMITH。 |
suffix_len | 1 | 是一个十六进制值,表示用户提供的后缀的长度。 X'00' 意味着没有用户提供的后缀。 |
用户定义的后缀是下列项目之一:
若后缀长于 199 个字符,则它将被截断。 为了确保当计帐字符串传送至主机或 AS/400 数据库服务器时得到正确地转换, 应该只使用字符 A 到 Z、0 到 9 和下划线 (_)。
建议使用 API 方法来设置计帐字符串。 应用程序应该在连接至数据库之前调用该 API。 若想更改应用程序内的计帐字符串(例如,当与不同的数据库相连时发送不同的字符串), 则再次调用 API。否则,此值保持有效,直到应用程序结束为止。
若在第一个数据库连接请求之前未调用 sqlesact() API, 则读取 DB2ACCOUNT 环境变量。此值保持有效, 直到应用程序或者后台命令行处理器进程结束为止。 在第一个数据库连接之后,要指定新的记帐字符串后缀, 可使用 sqlesact() API,或者结束应用程序或后台 CLP 进程, 再重新启动它,并将 DB2ACCOUNT 设置为新值。
若不存在 DB2ACCOUNT 值,则使用 DFT_ACCOUNT_STR 系统配置参数的值。 对于不能将计帐字符串转发至 DB2 Connect 的数据库客户机, 此缺省值很有用。若不存在记帐字符串,则使用空字符串。
下列是计帐字符串的一些示例:
x'3C'SQL07010OS/2 cheque SMITH x'05'DEPT1 x'37'SQL07010OS/2 cheque SMITH x'00'
在第一个示例中,用户定义的后缀的是 DEPT1。 在第二个示例中,后缀为一个空字符串。