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
[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 trace的片段:
[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]
为了根本原因搜索了很多,dint帮了很多,请提供一些指针来解决这个问题。 它是一台32位的linux机器,也有32位数据库驱动程序。
答案 0 :(得分:2)
根据此IBM Support page,SQLAllocHandle 上的 IM004 SQLState与新的安全功能相关。
原因
DB2®UniversalDatabase™(DB2中)引入的新安全功能 UDB)版本8.2阻止用户使用数据库,除非他们 属于Windows®组DB2ADMNS或DB2USERS。
答案
将用户标识(用于执行应用程序的用户标识)添加到 DB2ADMNS或DB2USERS组。请参阅“相关”下的链接 信息“(下面)有关如何实现此目的的说明。
或者,有许多线程(例如Huge problems connecting to a DB2 database)建议设置DB2INSTANCE
环境变量以匹配相关DSN的odbc.ini
文件中的实例设置,例如< / p>
export DB2INSTANCE=db2inst1
isql -v FS01DB2