连接到DB2数据库:[unixODBC] [驱动程序管理器]驱动程序SQL_HANDLE_HENV上的SQLAllocHandle失败

时间:2014-06-27 05:07:38

标签: 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

[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位数据库驱动程序。

1 个答案:

答案 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