让我先说这是我对这种事情的全新。不管怎么说..
我正在尝试连接到DB2数据库。 服务器正在运行Ubuntu 12.04和Apache Tomcat 7.驱动程序db2jcc.jar包含在构建路径中。
这是我的JSP代码:
<%@ page import="java.sql.*" %>
<% Class.forName("com.ibm.db2.jcc.DB2Driver");%>
<HTML>
<HEAD>
<TITLE>db2 connection</TITLE>
</HEAD>
<BODY>
<%
String url =
"jdbc:db2://IP_ADDR:60000/INST1" +
":user=USERNAME;password=PASSWORD;" +
"traceLevel=" +
(com.ibm.db2.jcc.DB2BaseDataSource.TRACE_ALL) + ";";
Connection con = java.sql.DriverManager.getConnection(url);
%>
</BODY>
</HTML>
我收到的错误消息:
应用程序服务器拒绝建立连接。 尝试访问未找到或不支持事务的数据库INST1。 ERRORCODE = -4499,SQLSTATE = 08004
我在这里查看了IBM支持页面上的问题: http://www-01.ibm.com/support/docview.wss?uid=swg21443723
它提到使用目标目录名,通过发出db2 list dcs directory
命令找到。
在服务器上,我最初是空白的,但是我使用db2 catalog dcs database DB2INST1 as INST1
命令创建了一个条目。
现在我使用db2 list dcs directory`的输出如下:
数据库连接服务(DCS)目录
目录中的条目数= 1
DCS 1条目:
本地数据库名称= DB2INST1
目标数据库名称= INST1
申请请求人姓名=
DCS参数=
评论=
DCS目录发布级别= 0x0100
我通过db2stop
和db2start
最后,我运行netstat -tulpn
并看到数据库正在侦听端口60000.输出如下:
tcp 0 0 0.0.0.0:60000 0.0.0.0:* LISTEN
2949 / db2sysc
这是我得到的。据我所知,我正在使用目标数据库名称并尝试连接到正确的端口号。
我在这里咆哮着正确的树吗?任何帮助是极大的赞赏。
**编辑:对mustaccio的回复的格式化答案**
在服务器上,我在ssh后进入了一个级别。我得到4个名为<USERNAME>, dasusr1, db2fenc1, db2inst1
从那里我做sudo su db2inst1
然后运行db2 list dcs directory command
得到:
Database Connection Services (DCS) Directory
Number of entries in the directory = 1
DCS 1 entry:
Local database name = DB2INST1
Target database name = INST1
Application requestor name =
DCS parameters =
Comment =
DCS directory release level = 0x0100
答案 0 :(得分:0)
已经有一段时间了,但是对于其他正在寻找此db2连接问题的解决方案的人。如果人们想测试他们的开发机器到db2服务器的物理连接,请使用DB2驱动程序随附的CLPPlus,并手动输入连接参数以确保您具有物理连接。我的环境与Garret的环境完全不同,但我想提供另外一条线索来帮助人们建立联系。我当时将VS 2015 Enterprise与SSIS一起使用。我使用CLPPlus确认物理连接,然后开始尝试将ADO.Net源连接到db2。我必须为服务器凭据db2server.mydomain.com:523覆盖端口,以将端口覆盖为523。然后发生了一些有趣的事情。 SSIS对连接大惊小怪,我开始查看参数。参数之一是身份验证,您可以在jdbc中进行编码。我放入了DB2(而不是ldap或其他钱包)作为Authentication的值,并且它起作用了。