3

このページには、接続パラメーターの1つとして「clientProgramName」を入れることができ、それが相関IDとしてdb2に表示されると書かれています。

そして私は引用します:

DriverManager.getConnection呼び出しのinfoパラメーターのjava.util.Properties値。

z/OSを使用しています。DB2のz/OSバージョンは、この種のものに関してははるかに制限されているようです。

接続呼び出しのparamsハッシュにクライアントプログラム名を設定しても効果がないようです。これを接続文字列のURLの最後に置くと、次のようになります(これも実行可能と表示されます)。

jdbc:db2://localhost:5036/DBNAME:clientProgramName=myprog

このエラーが発生します:

[jcc][10165][10051][4.11.77] Invalid database URL syntax: 
jdbc:db2://localhost:5036/DBNAME:clientProgramName=myprog. 
ERRORCODE=-4461, SQLSTATE=42815 

サーバー上で接続を識別できるように、カスタムユーザー文字列をaz / OS db2サーバーに送信する方法はありますか?

4

4 に答える 4

4

DB2 への接続に使用する方法に応じて、以下を使用します。

Class.forName

Class.forName("com.ibm.db2.jcc.DB2Driver");
Properties props = new Properties();
props.put("user", "scott");
props.put("password", "tiger");
props.put("clientProgramName", "My Program 1");
Connection conn = DriverManager.getConnection(
    "jdbc:db2://localhost:50000/sample", props);

情報源

Connection conn = null;
DB2SimpleDataSource ds = new com.ibm.db2.jcc.DB2SimpleDataSource();
ds.setDriverType(4);
ds.setServerName("localhost");
ds.setPortNumber(50000);
ds.setDatabaseName("sample");
ds.setUser("scott");
ds.setPassword("tiger");
ds.setClientProgramName("My Application 2");
conn = ds.getConnection();

それについてブログを書きました: http://angocadb2.blogspot.fr/2012/12/nombre-de-la-conexion-java-en-db2-java.html (スペイン語なので、お気に入りの翻訳者を使用してください)

于 2013-03-25T14:50:45.227 に答える
2

Info Center のこのページによるとDB2Connection、アプリケーション識別子を変更できる機能がインターフェイスにあるはずですsetDB2ClientApplicationInformation(アンカーがないため、直接リンクできません。その名前を検索するだけです)。

CURRENT CLIENT_APPLNAME特殊レジスターを使用して、現在のアプリケーション ID を取得できます。

SELECT CURRENT CLIENT_APPLNAME FROM SYSIBM.SYSDUMMY1

関数を含む、上記の情報センターのリンクにリストされているレジスタを設定する方法は他にもいくつかありWLM_SET_CLIENT_INFOます。

于 2013-03-22T18:21:10.047 に答える
1

私は DB2 の専門家ではありませんが、設定した値と一致する「相関 ID」 (トレース レコードの製品セクション相関ヘッダーのフィールド QWHCCV ) を含む、DB2 for z/OS によって生成されたトレース レコードを見ています。 setClientProgramName (私の Java アプリケーションの DB2 データ ソースのメソッド) を使用します。

私の Java アプリケーションは、AngocA が提供する「DataSource」の例に似ています。これは、IBM 技術情報「DB2 JDBC アプリケーションの名前は「db2jcc_application」と表示されます」で引用されているコードに似ています。どうやって変えるの?」. 私の Windows PC で実行されているこの Java アプリケーションは、DB2 for z/OS に接続します。また、これは重要であり、開始した DB2 トレース (以下で説明) に応じて、接続後に実際に何かを実行します。例えば:

pstmt=conn.prepareStatement("SELECT ... ");
rset=pstmt.executeQuery();

AngocA が示した最初の例に関して、「何もしない」とあなたが言うとき、あなたは何を見たいと思っていましたか? 正確にどこを探しているのか、何を探しているのか、それを探すためにどのような方法 (またはツール) を使用しているのか?

たとえば、相関 ID と一致する QWHCCV フィールド値を含む SMF タイプ 100、101、または 102 レコード (DB2 トレースによって生成される) を探している場合、(これが明らかな出血である場合は申し訳ありませんが、卵を吸う方法を教えます) )、DB2 for z/OS では、これらのレコードを生成するDB2 トレースを (DB2 コマンドSTART TRACEを使用して) 開始する必要があります。そうでなければ、何も表示されません (「何もしません」)。アプリケーション (上記の Java アプリケーションなど) によって生成されるすべての DB2 トレース レコードに相関 ID が含まれるわけではないことに注意してください。処理のある時点より前に、そのようなレコードの相関 ID は異なる値になります (しかし、それはトピックから外れており、とにかく私が説明するのに満足している限りです)。

警告:本番 DB2 システムではなく、「サンドボックス」(開発またはテスト) DB2 システムで DB2 トレースを開始してみてください。DB2 トレースは、大量のデータになる可能性があります。

「THREAD-INFO=」の後に、一部の DB2 V10 メッセージ (DSNL027I など) のメッセージ テキストにも相関 ID が表示されます。

于 2013-04-03T09:07:51.563 に答える