ERRORCODE=-4499

ERRORCODE=-4499 は、アプリケーション・サーバーが接続の確立を拒否したことを意味しています。

問題と症状

タイプ 4 JCC ドライバーを使用してデータベースへの接続を試みましたが、以下の例外によって失敗に終わりました。
java.sql.SQLException: [jcc][t4][2057][11264][3.53.95] The application server rejected establishment of the connection. 
An attempt was made to access a database, which was either not found or does not support transactions. ERRORCODE=-4499, SQLSTATE=08004 DSRA0010E: SQL State = 08004, Error Code = -4,499

本質的に、接続は失敗しました。

原因と解決策

このエラーの原因は、接続ストリングで DCS DB 別名またはデータベースのローカル別名を使用して接続を試みていることです。

解決策は、IBM Data Server Driver for JDBC and SQLJ のタイプ 4 接続用の URL 形式を使用することから始まります。
"jdbc:db2://<server name>: <portnumber>/<database name>";
使用されるタイプ 4 JDBC JCC ドライバー接続ストリングで、次のようにします。
  • 接続先が Db2® サーバーへの接続の場合、 <データベース名>はデータベース・サーバーのターゲット・データベース名 でなければならない。
  • 接続先が Db2 for z/OS サーバーへの接続の場合、 <データベース名>はインストール時に定義された Db2 インストール時に定義されたロケーション名である。 Db2 ロケーション名のすべての文字は、大文字でなければなりません。 IBM Data Server Driver for JDBC and SQLJ は、IBM Data Server Driver for JDBC and SQLJ タイプ 4 接続に対して、データベース値の中の小文字を大文字に変換することはありません。
location name は、以下の SQL ステートメントをサーバー上で実行することによって調べられます。
SELECT CURRENT SERVER FROM SYSIBM.SYSDUMMY1;
ターゲット・データベース名は、次のコマンドを使ってクライアントで DCS ディレクトリーから調べることもできます。
db2 list dcs directory