e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 数据库 >> DB2教程 >> 使用连接的应用程序标识 >> 教程正文
 
教程搜索
 
 
相关教程
  • 数据挖掘器: 警告 — 及时采取行动
  • UNIX、Linux 和 Windows 的生动简介
  • “总览图”: IBM DB2 通用数据库和信息
  • DB2 大事记
  • 数据管理部门副总裁兼 CTO:Don Hader
  • IBM 联邦数据库技术
  • 唐纳德.海德勒(Donald J. Haderle)
  • 数据库未来展望
  • 哪一个分布式 DB2 UDB V8 版本适合您?
  • 从数据管理到信息集成: 自然的演变
  • 联邦 - 数据库互操作性(第 1 部分)
  • 成功是必然的(中)
  • 成功是必然的(上)
  • 成功是必然的(下)
  • DB2 信息集成: 总览图
  • IBM 杰出工程师兼信息集成主管 Nelson
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
使用连接的应用程序标识
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9

Knut Stolze, IBM 信息集成部, IBM 德国

Paul Yip, DB2 合作伙伴支持部, IBM 多伦多实验室

2003 年 8 月

一切终于大白于天下!获取应用程序标识并将之用于诸如测试连接这样的目的,以及用于连接合用体系结构中的审计比您所认为的简单。还包含了样本二进制。

本文是为 IBM® DB2® Universal Database™ v8.1 for Linux、UNIX® 和 Windows® 而编写的

重要: 在阅读本文之前请先阅读 免责声明。

简介

客户常常问我们 DB2 中是否有任何会话或应用程序标识的概念,如果有,如何访问它。应用程序可以使用这一信息确定连接的状态,或用于用户修改敏感数据时的审计目的。

唔,有好消息,也有坏消息。好消息是每个至数据库的连接确实都有一个应用程序标识。坏消息是 DB2 不提供轻松检索这个标识的内置 SQL 函数 - 您将需要自己编写一个。编写或构建该函数不难,而且本文的 第 1 部分将向您展示如何快速地这么做。本文的 第 2 部分针对如何使用应用程序标识讨论了一些样本方案。

第 1 部分. 构建一个函数来获取连接的应用程序标识

要构建这个函数,需要安装 DB2 应用程序开发客户机(DB2 Application Development Client)和 C 或 Java 编译器。(如果没有 C 编译器,请参阅 安装二进制文件)。以数据库实例所有者身份(例如, db2inst1 )在服务器本地发出所有命令。

首先,该函数从 DB2 检索到的信息称为应用程序标识。检索到的应用程序标识就是您从 DB2 命令行处理器(Command Line Processor,CLP)发出 LIST APPLICATIONS 时所看到的值:

清单 1. CLP 上 LIST APPLICATIONS 的输出

Auth Id Application Appl. Application Id DB # of Name Handle Name Agents -------- ------------ ------ ------------------------ -------- ----- DB2ADMIN db2bp.exe 5 *LOCAL.DB2.00BE85034416 SAMPLE 1

清单 1 中,第四列表示连接的应用程序标识是 *LOCAL.DB2.00BE85034416 。对于远程连接, *LOCAL 就被替换成客户机机器 IP 地址的十六进制表示。


C 函数

以下 C 函数( 清单 2中)将允许我们检索连接的应用程序标识。

清单 2. 检索连接的应用程序标识的 C 函数

#include <string.h> #include <sqludf.h> void SQL_API_FN getApplicationId( SQLUDF_CHAR *applId, SQLUDF_NULLIND *applId_ind, SQLUDF_TRAIL_ARGS, SQLUDF_DBINFO *dbinfo) { strncpy(applId, dbinfo->appl_id, 128); *applId_ind = 0; }

构建 C 函数

要构建这个函数,需要一个定义库入口点的导出文件。该导出文件根据您平台的不同将有所不同:

  • 对于 Windows,该文件被命名为 application_id.def 。它显示在 清单 3a 中。

    清单 3a:Windows 的导出文件(application_id.def)

    LIBRARY application_id EXPORTS getApplicationId

  • 对于 UNIX,该文件的名称应为 application_id.exp 。它由单个行组成,显示在 清单 3b 中。

    清单 3b:UNIX 的导出文件(application_id.exp)

    getApplicationId

在放置 C 源代码文件( application_id.c )的目录中创建了这两个文件中的一个(取决于您的平台)后,编译该代码并进行链接。DB2 提供了一个构建例程脚本( bldrtn )来简化这个过程。该脚本位于 sqllib/samples/c 目录。

DB2 V7: 对于 DB2 UDB 7.x 版本,在 UNIX 上请使用脚本 bldudf ,在 Windows 上请使用 bldmudf 。其调用语法与 V8 中的稍有不同。请查看这些文件,以了解有关如何运行这些构建脚本的细节。 要构建用户定义的函数(UDF),请执行: INSTHOME /sqllib/samples/c/bldrtn application_id 其中, INSTHOME 是实例主目录的路径。例如: c:\\program files\\ibm\\sqllib\\samples\\c\\bldrtn application_id 或 /home/db2inst1/sqllib/samples/c/bldrtn application_id 该脚本将完成两件事:
  1. 编译 UDF 并将其链接到共享库。
  2. 将产生的共享库(在 UNIX 系统上名为 application_id ,而在 Windows 系统上名为 application_id.dll )复制到 sqllib/function 目录
Java 函数 通过使用 Java 编程语言可以实现上述 C 函数所提供的相同功能,如 清单 4所示。该函数的代码同样很简短。 清单 4. 检索连接的应用程序标识的 Java 函数 import java.sql.*; import COM.ibm.db2.app.*; public class appl_id extends UDF { public void getApplicationId(String result) throws Exception { try { // set the output parameter based on DBINFO set(1, getDBapplid()); } catch (Exception e) { setSQLstate("38XXX"); if (e.getMessage().length() > 0) { setSQLmessage("Exception '" + e.getMessage() + "' encountered."); } else { setSQLmessage("Exception '" + e.toString() + "' encountered."); } } } } 构建 Java 函数 编译这样简短的 Java 函数很容易完成。使用 Java 编译器 javac 将源文件转换成类文件中的 Java 字节码,然后将该产生的类文件复制到 sqllib/function 目录,如 清单 5所示。请注意,“cp”通常是 UNIX 的复制文件命令,对于 Windows 系统,应该使用“copy”。 清单 5. 编译并安装 Java 函数 javac appl_id.java cp appl_id.class INSTHOME/sqllib/function 安装二进制文件 为了更进一步简化该过程,可以使用从 C 代码预构建的库或由 Java 代码所生成的类文件。 从 C 代码构建的库都命名为 application_id (在 Windows 系统上则是 application_id.

1 2 3 下一页
  • 上一篇教程: INSTEAD OF 触发器
  • 下一篇教程: 另一篇有关高级脚本编制的文章
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.