连接到DB2数据库:[unixODBC][Driver Manager]Driver';SQL\u句柄\u HENV上的s SQLAllocHandle失败
odbc.ini:连接到DB2数据库:[unixODBC][Driver Manager]Driver';SQL\u句柄\u HENV上的s SQLAllocHandle失败,db2,odbc,unixodbc,Db2,Odbc,Unixodbc,odbc.ini: [DEFAULT] Driver = DB2 [abc] Driver = DB2 [dsn_test1] DESCRIPTION = Connection to DB2 Driver = db2 odbcinst.ini: [DB2] Description = DB2 Driver Driver = /home/user/sqllib/lib/libdb2.so fileusage=1 dontdlclose=1
[DEFAULT]
Driver = DB2
[abc]
Driver = DB2
[dsn_test1]
DESCRIPTION = Connection to DB2
Driver = db2
odbcinst.ini:
[DB2]
Description = DB2 Driver
Driver = /home/user/sqllib/lib/libdb2.so
fileusage=1
dontdlclose=1
[ODBC]
Trace=1
TraceFile=/home/user/sqllib/trace.out
db2cli.ini
[abc]
hostname="hostname"
pwd="passwd"
port="port"
PROTOCOL=TCPIP
database="dbname"
uid="uid"
美元/isql abc
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
从db2驱动程序连接时,出现以下错误:
Connection attempt for data source name "abc":
===============================================================================
ODBC Driver Manager Path: /home/user/sqllib/odbclib/lib/libodbc.so
[FAILED]: [unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV
failed
以下是odbc跟踪的片段:
[ODBC][23419][1403783774.660159][SQLConnect.c][1380]Error: IM004
[ODBC][23419][1403783774.660223][SQLError.c][434]
Entry:
Connection = 0x81aaac8
SQLState = 0xffff9593
Native = 0xffff9684
Message Text = 0xffff8d93
Buffer Length = 1024
Text Len Ptr = 0xffff95bc
[ODBC][23419][1403783774.660260][SQLError.c][471]
Exit:[SQL_SUCCESS]
SQLState = IM004
Native = 0xffff9684 -> 0
Message Text = [[unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV failed]
谷歌搜索了很多根本原因,力帮助很大,请提供一些解决这个问题的指针。
它是一台32位linux机器,也有32位db驱动程序。根据这一点,SQLAllocHandle上的IM004 SQLState与新的安全功能相关
原因
DB2®Universal Database中引入的新安全特性™ (DB2)
UDB)版本8.2禁止用户使用数据库,除非
属于Windows®组DB2ADMNS或DB2USERS
答复
将用户ID(用于执行应用程序的用户ID)添加到
DB2ADMNS或DB2USERS组。请参阅“相关”下的链接
有关如何完成此操作的说明,请参阅下文中的“信息”
或者,有许多线程(例如)建议将DB2INSTANCE
环境变量设置为与相关DSN的odbc.ini
文件中的实例设置相匹配,例如
export DB2INSTANCE=db2inst1
isql -v FS01DB2
您好,谢谢您的回复,忘了提到它的linux32位机器和无实例客户端。在这种情况下,DB2INSTANCE将无效。您是否尝试过查看他们的网站,以获取有关从源代码构建(然后能够修改)的说明。已经有一段时间了,但我以前在使用ODBC驱动程序时就这样做了。export CC=gcc export CFLAGS=“-maix64-q64-DBUILD\u REAL\u 64\u BIT\u MODE”export OBJECT\u MODE=64,在Linux上查看后调试编辑您的问题以回答(1)什么是Linux发行版和版本详细信息(2)安装的Db2驱动程序名称和类型,特别是它的版本,fixpack(3)详细说明了“从Db2驱动程序连接”的含义,显示了确切的命令行(如果使用)或源代码。(4) 详细说明涉及的帐户,即哪个帐户安装了Db2驱动程序,哪个帐户试图通过哪个方法连接。我在odbcinst配置中启用了跟踪,但跟踪显示在哪里?