アプリケーション開発: クライアント・アプリケーションのプログラミング

8 8 8

OleDbReportIsLongForLongTypes CLI/ODBC 構成キーワード

8
8
キーワードの説明:
8
OLE DB フラグを DBCOLUMNFLAGS_ISLONG で LONG データ・タイプにします。 8
8
db2cli.ini キーワードの構文:
8
OleDbReportIsLongForLongTypes = 0 | 1 8
8
同等のステートメント属性:
8
SQL_ATTR_REPORT_ISLONG_FOR_LONGTYPES_OLEDB 8
8
デフォルト設定:
8
LONG タイプ (LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC、および LONG VARGRAPHIC FOR BIT DATA) には DBCOLUMNFLAGS_ISLONG フラグが設定されていません。これにより列が WHERE 節で使用されることがあります。 8
8
使用上の注意:
8
  8
8
8

OLE DB のクライアント・カーソル・エンジンと OLE DB .NET Data Provider の CommandBuilder は、IBM(R) DB2(R) OLE DB Provider により提供される列情報に基づいて更新および削除ステートメントを生成します。生成されたステートメントの WHERE 節に LONG タイプが使用されていると、LONG タイプは等価演算子での検索に使用できないため、ステートメントは失敗します。キーワード OleDbReportIsLongForLongTypes を 1 に設定すると、IBM DB2 OLE DB Provider は、DBCOLUMNFLAGS_ISLONG フラグを設定して、LONG タイプ (LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC、および LONG VARGRAPHIC FOR BIT DATA) を報告するようにします。これにより WHERE 節に長い列が使用されないようになります。

8 8 8

OleDbSQLColumnsSortByOrdinal CLI/ODBC 構成キーワード

8
8
キーワードの説明:
8
OLE DB の IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) が、ORDINAL_POSITION 列でソートされた行セットを戻します。 8
8
db2cli.ini キーワードの構文:
8
OleDbSQLColumnsSortByOrdinal = 0 | 1 8
8
同等のステートメント属性:
8
SQL_ATTR_SQLCOLUMNS_SORT_BY_ORDINAL_OLEDB 8
8
デフォルト設定:
8
IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) は、TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、COLUMN_NAME 列でソートされた行セットを戻します。 8
8
使用上の注意:
8
  8
8
8

Microsoft(R) OLE DB 仕様では、IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) が、TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、COLUMN_NAME 列でソートされた行セットを戻すことが必要です。 8IBM DB2 OLE DB Provider は、この仕様に準拠しています。ただし、Microsoft ODBC Bridge provider (MSDASQL) を使用するアプリケーションは通常、ORDINAL_POSITION でソートされた行セットを取得するようコード化されています。 8OleDbSQLColumnsSortByOrdinal キーワードを 1 に設定すると、プロバイダーは ORDINAL_POSITION でソートされた行セットを戻します。

8 8 8

IBM DB2 OLE DB Provider 用の DB2 Data Source プロパティー・グループ

8

IBM DB2 OLE DB Provider には新規のプロパティー・グループ、DB2 Data Source が追加されました。 8DB2 Data Source のプロパティー・セットはDBPROPSET_DB2DATASOURCE です。

8

プロパティー・セットの GUID は、{0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}} です。

8

DBPROPSET_DB2DATASOURCE には、次の 3 つのプロパティーがあります。 8

8 8
8DB2PROP_REPORTISLONGFORLONGTYPES 8

8
#define DB2PROP_REPORTISLONGFORLONGTYPES 4
8Property group: DB2 Data Source 
8Property set: DB2PROPSET_DATASOURCE
8Type: VT_BOOL
8Typical R/W: R/W
8Description: Report IsLong for Long Types
8

OLE DB のクライアント・カーソル・エンジンと OLE DB .NET Data Provider の CommandBuilder は、IBM DB2 OLE DB Provider により提供される列情報に基づいて更新および削除ステートメントを生成します。生成されたステートメントの WHERE 節に LONG タイプが使用されていると、LONG タイプは等価演算子での検索に使用できないため、ステートメントは失敗します。

8 8888888888888888888
表 17. DB2PROP_REPORTISLONGFORLONGTYPES 値
意味
VARIANT_TRUE IBM DB2 OLE DB Provider が、DBCOLUMNFLAGS_ISLONG フラグを設定して、LONG タイプ (LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC、および LONG VARGRAPHIC FOR BIT DATA) を報告するようにします。これにより WHERE 節に長い列が使用されないようになります。
VARIANT_FALSE DBCOLUMNFLAGS_ISLONG は、LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC、および LONG VARGRAPHIC FOR BIT DATA には設定されません。これがデフォルトです。
8
8DB2PROP_RETURNCHARASWCHAR 8

8
#define DB2PROP_RETURNCHARASWCHAR 2
8Property group: DB2 Data Source 
8Property set: DB2PROPSET_DATASOURCE
8Type: VT_BOOL
8Typical R/W: R/W
8Description: Return Char as WChar
8

8 8888888888888888888
表 18. DB2PROP_RETURNCHARASWCHAR 値
意味
VARIANT_TRUE OLE DB は、タイプ CHAR、VARCHAR、LONG VARCHAR、または CLOB の列を DBTYPE_WSTR として記述します。ISequentialStream で想定されるデータのコード・ページは、UCS-2 です。これがデフォルトです。
VARIANT_FALSE OLE DB は、タイプ CHAR、VARCHAR、LONG VARCHAR、または CLOB の列を DBTYPE_STR として記述します。ISequentialStream で想定されるデータのコード・ページは、クライアントのローカル・コード・ページです。
8
8DB2PROP_SORTBYORDINAL 8

8
#define DB2PROP_SORTBYORDINAL 3
8Property group: DB2 Data Source 
8Property set: DB2PROPSET_DATASOURCE
8Type: VT_BOOL
8Typical R/W: R/W
8Description: Sort By Ordinal
8

Microsoft OLE DB 仕様では、IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) が、TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME、COLUMN_NAME 列でソートされた行セットを戻すことが必要です。 8IBM DB2 OLE DB Provider は、この仕様に準拠しています。ただし、Microsoft ODBC Bridge provider (MSDASQL) を使用するアプリケーションは通常、ORDINAL_POSITION でソートされた行セットを取得するようコード化されています。 8

8 8888888888888888888
表 19. DB2PROP_SORTBYORDINAL 値
意味
VARIANT_TRUE プロバイダーは ORDINAL_POSITION でソートされた行セットを戻します。
VARIANT_FALSE プロバイダーは TABLE_CATALOG、TABLE_SCHEMA、 8TABLE_NAME、COLUMN_NAME でソートされた行セットを戻します。これがデフォルトです。
8 8 8

DB2Binder 構文図内の誤った URL 構文

8

トピック『DB2 Universal JDBC ドライバーのインストール』の DB2Binder 構文図では、DB2 Universal JDBC ドライバーの URL 構文が誤って定義されています。DB2Binder の URL 構文の正しい表現を次の図に示します。

8
8DB2Binder の構文
8 8
構文図を読む構文図をスキップする8>>-java--com.ibm.db2.jcc.DB2Binder------------------------------>
8
8>---url jdbc:db2://server-+---------+-/database----------------->
8                          '-:--port-'
8
8>---user user-ID---password password--+---------------+--------->
8                                      '--size integer-'
8
8>--+-----------------------------+------------------------------>
8   '--collection collection-name-'
8
8>--+-------------------------------+--+-------+----------------><
8   |              .-,------------. |  '--help-'
8   |              V              | |
8   '--tracelevel ---trace-option-+-'
8
8
8 8
8 8 8

DB2 Universal JDBC ドライバー・クライアントの転送

8

クライアント・アプリケーションは、Linux、(TM)UNIX、(R)および Windows(R) 版 DB2 Universal Database(TM) (UDB) の自動クライアント転送機能を使用すると、サーバーとの通信の消失からリカバリーできるため、最小限の中断で作業を継続することができます。

8

サーバーがロックすると、そのサーバーに接続している各クライアントは通信エラーを受け取り、接続が終了して、アプリケーション・エラーになります。 8可用性が重要である場合は、重複セットアップまたはフェイルオーバー・サポートが必要です。 8フェイルオーバーは、別のサーバーが失敗したときに、操作を引き継ぐサーバーの機能です。 8いずれの場合にも、DB2 Universal JDBC ドライバー・クライアントは、新規サーバーまたは元のサーバーへの接続を再確立しようとします。接続先はフェイルオーバー・ノード上で実行している可能性があります。 8接続が再確立された場合、アプリケーションはトランザクション障害を通知する SQLException を受け取りますが、アプリケーションは次のトランザクションを続行できます。

8
8制約事項 8

8
8
8手順 8

データベース管理者がサーバー・インスタンスの特定のデータベースで代替サーバーのロケーションを指定した後、1 次および代替サーバーのロケーションが接続時にクライアントに戻されます。 8DB2 Universal JDBC ドライバーは、Referenceable オブジェクト DB2ClientRerouteServerList を作成して、そのインスタンスを一時メモリーに格納します。通信が失われた場合、DB2 Universal JDBC ドライバーは、サーバーから戻されたサーバー情報を使用して、接続の再確立を試行します。

8

clientRerouteServerListJNDIName DataSource プロパティーは、追加のクライアント転送サポートをクライアントで提供します。clientRerouteServerListJNDIName には次の 2 つの機能があります。 8

8 8

clientRerouteServerListJNDIName は、代替サーバー情報の JNDI リポジトリー内で DB2ClientRerouteServerList インスタンスへの JNDI 参照を識別します。1 次サーバーへの接続が成功すると、そのサーバーからの情報により、clientRerouteServerListJNDIName によって提供される代替サーバー情報が上書きされます。 8DB2 Universal JDBC ドライバーは、clientRerouteServerListJNDIName プロパティーが定義されていると、フェイルオーバー後に、更新された情報を JNDI ストアに伝搬しようとします。 8clientRerouteServerListJNDIName が指定されると、DB2ClientRerouteServerList に指定された 1 次サーバー情報が接続に使用されます。1 次サーバーが指定されない場合は、データ・ソースに指定された serverName 情報が使用されます。

8

DB2ClientRerouteServerList は、次の 4 つのプロパティーを持つシリアライズ可能な Java(TM) Bean です。 8

8

8これらのプロパティーにアクセスする getter および setter メソッドが用意されています。DB2ClientRerouteServerList クラスの定義は、次のとおりです。 8

8
package com.ibm.db2.jcc;
8public class DB2ClientRerouteServerList 
8  implements java.io.Serializable,
8  javax.naming.Referenceable
8{
8  public String[] alternateServerName;
8  public synchronized void
8    setAlternateServerName(String[] alternateServer);
8  public String[] getAlternateServerName();
8  public int[] alternatePortNumber;
8  public synchronized void
8    setAlternatePortNumber(int[] alternatePortNumberList);
8  public int[] getAlternatePortNumber();
8  
8  public synchronized void
8    setPrimaryServerName (String primaryServerName);
8  public String getPrimaryServerName ();
8  public synchronized void setPrimaryPortNumber (int primaryPortNumber)
8  public int getPrimaryPortNumber (); 
8}
8

新しく確立されたフェイルオーバー接続は、サーバー名とポート番号は除き、元のデータ・ソース・プロパティーで構成されます。 8さらに、元の接続中に変更されたすべての DB2 UDB 特殊レジスターは、DB2 Universal Driver JDBC ドライバーにより、フェイルオーバー接続で再確立されます。

8

通信障害が発生すると、DB2 Universal JDBC ドライバーは、まず 1 次サーバーに対するリカバリーを試行します。 8これに失敗すると、ドライバーは代替ロケーションに接続しようとします (フェイルオーバー)。 8接続が再確立された後、ドライバーは、SQLCODE -4498 とともに java.sql.SQLException をアプリケーションにスローし、 8代替サーバーへの接続が自動的に再接続されたことをアプリケーションに通知します。 8その後、アプリケーションはトランザクションを再試行できます。

8
8DB2ClientRerouteServerList を永続にするための手順 8

ストレージをセットアップして DB2ClientRerouteServerList を永続にするには、以下の手順を実行します。 8

8
    8
  1. DB2ClientRerouteServerList のインスタンスを作成して、そのインスタンスを JNDI レジストリーにバインドします。 8例えば、次のようにします。 8
    // Create a starting context for naming operations
    8InitialContext registry = new InitialContext();
    8// Create a DB2ClientRerouteServerList object
    8DB2ClientRerouteServerList address=new DB2ClientRerouteServerList();
    8
    8// Set the port number and server name for the primary server
    8address.setPrimaryPortNumber(50000);
    8address.setPrimaryServerName("mvs1.sj.ibm.com");
    8
    8// Set the  port number and server name for the alternate server
    8int[] port = {50002};
    8String[] server = {"mvs3.sj.ibm.com"};
    8address.setAlternatePortNumber(port);
    8address.setAlternateServerName(server);
    8    
    8registry.rebind("serverList", address);
    
  2. 8
  3. DB2ClientRerouteServerList オブジェクトの JNDI 名を DataSource プロパティー clientRerouteServerListJNDIName に割り当てます。例えば、次のようにします。 8
    datasource.setClientRerouteServerListJNDIName("serverList");
7 7 7

DB2 Universal JDBC ドライバー構成プロパティーのカスタマイズ

7

DB2 Universal JDBC ドライバーの構成プロパティーによって、そのドライバー全体にわたる有効範囲を持つプロパティー値を設定できます。 7それらの設定値は、アプリケーションおよび DataSource インスタンス全体に適用されます。 7アプリケーションのソース・コードや DataSource の特性を変更せずに、設定値を変更できます。

7

それぞれの DB2 Universal JDBC ドライバー構成プロパティー設定の形式は、次のとおりです。 7

7
property=value
7

構成プロパティーが db2.jcc.override で始まる場合は、構成プロパティーはすべての接続に適用でき、同じプロパティー名を持つ Connection または DataSource プロパティーをオーバーライドします。 7構成プロパティーが db2.jcc または db2.jcc.default で始まる場合は、構成プロパティー値がデフォルトになります。 7その値は Connection または DataSource プロパティー設定値でオーバーライドされます。

7
7手順 7

構成プロパティーを設定するには、以下のようにします。

7

7 7

以下の DB2 Universal JDBC ドライバー構成プロパティーを設定できます。 7すべてのプロパティーはオプションです。

7
7
db2.jcc.override.traceFile
7
DB2 Universal JDBC ドライバーの Java ドライバー・コードのトレースを使用可能に設定し、トレース・ファイル名の基になる名前を指定します。 7 7

db2.jcc.override.traceFile プロパティー値の完全修飾ファイル名を指定します。

7 7

db2.jcc.override.traceFile プロパティーは、Connection または DataSource オブジェクトの traceFile プロパティーをオーバーライドします。

7 7

例えば、以下の設定を db2.jcc.override.traceFile に対して指定すると、DB2 Universal JDBC ドライバー Java コードの、/SYSTEM/tmp/jdbctrace という名前のファイルへのトレースが使用可能に設定されます。 7

7
db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace

7トレース・プロパティーは、IBM ソフトウェア・サポートの指示を受けて設定してください。

7
7
db2.jcc.sqljUncustomizedWarningOrException
7
カスタマイズされていない SQLJ アプリケーションの実行時に DB2 Universal JDBC ドライバーが実行するアクションを指定します。 7db2.jcc.sqljUncustomizedWarningOrException には、以下の値を指定できます。 7 7
7
0
7
DB2 Universal JDBC ドライバーは、カスタマイズされていない SQLJ アプリケーションの実行時に、警告または例外を生成しません。 7これがデフォルトです。 7
7
1
7
DB2 Universal JDBC ドライバーは、カスタマイズされていない SQLJ アプリケーションの実行時に、警告を生成します。 7
7
2
7
DB2 Universal JDBC ドライバーは、カスタマイズされていない SQLJ アプリケーションの実行時に、例外を生成します。 7
7
7
7
7 7 7

db2secFreeToken 関数が除去された

7

db2secFreeToken 関数 (トークンによって保持される空きメモリー) が、db2secGssapiServerAuthFunctions_1 ユーザー認証プラグイン API の一部ではなくなりました。

8 8 8

カスタム・セキュリティー・プラグインのデプロイメントには注意が必要

8

セキュリティー・プラグインのデプロイメントが適切にコード化、検討、およびテストされていないと、DB2 Universal Database (UDB) インストールの整合性が損なわれることがあります。DB2 UDB では一般的な種類の多くの障害に対して予防措置を講じていますが、ユーザー作成のセキュリティー・プラグインがデプロイされた場合、完全な整合性を保証できません。

7 7 7

セキュリティー・プラグイン

7

ユーザー独自のカスタマイズ済みセキュリティー・プラグインを使用する場合、CLP または動的 SQL ステートメントによって発行される接続ステートメントで、最大 255 文字のユーザー ID を使用できます。

7 7 7

セキュリティー・プラグイン API

7

db2secGetGroupsForUser、db2secValidatePassword、および db2secGetAuthIDs API の場合、入力パラメーター dbname はヌルでもかまいません。その場合、それに対応する長さ入力パラメーター dbnamelen は 0 に設定されます。

7 7 7

セキュリティー・プラグインの命名規則 (Linux および UNIX)

7

.so は、すべての Linux および UNIX プラットフォームで、ユーザー作成のセキュリティー・プラグイン・ライブラリーのファイル名拡張子として受け入れられるようになりました。

7

AIX(R) では、セキュリティー・プラグイン・ライブラリーの拡張子は .a または .so とすることができます。 7両方のバージョンのプラグイン・ライブラリーが存在する場合は、.a バージョンが使用されます。

7

PA-RISC 上の HP-UX では、セキュリティー・プラグイン・ライブラリーの拡張子は .sl または .so とすることができます。 7両方のバージョンのプラグイン・ライブラリーが存在する場合は、.sl バージョンが使用されます。

7

他のすべての Linux および UNIX プラットフォームでは、.so が、セキュリティー・プラグイン・ライブラリーに対してサポートされる唯一のファイル名拡張子です。

7 7 7

セキュリティー・プラグイン・ライブラリーに関する制約事項

7

AIX では、セキュリティー・プラグイン・ライブラリーのファイル名拡張子は .a または .so とすることができます。 7プラグイン・ライブラリーをロードするために使用されるメカニズムは、使用される拡張子によって異なります。 7

7
7
ファイル名拡張子が .a のプラグイン・ライブラリー
7
ファイル名拡張子が .a のプラグイン・ライブラリーは、共用オブジェクト・メンバーを含むアーカイブであると見なされます。 7これらのメンバーは、shr.o (32 ビット) または shr64.o (64 ビット) と命名しなければなりません。 7単一のアーカイブに 32 ビットと 64 ビットの両方のメンバーを含めて、これを両方のタイプのプラットフォームに配置することができます。 7 7

例えば、32 ビットのアーカイブ・スタイル・プラグイン・ライブラリーを作成するには、次のようにします。 7

7
  xlc_r -qmkshrobj -o shr.o MyPlugin.c -bE:MyPlugin.exp
7  ar rv MyPlugin.a shr.o
7
7
ファイル名拡張子が .so のプラグイン・ライブラリー
7
ファイル名拡張子が .so のプラグイン・ライブラリーは、動的にロード可能な共用オブジェクトであると見なされます。 7そのようなオブジェクトは、作成されたときに使用されたコンパイラーおよびリンカー・オプションによって、32 ビットまたは 64 ビットのいずれかになります。 7例えば、32 ビットのプラグイン・ライブラリーを作成するには、次のようにします。 7 7
  xlc_r -qmkshrobj -o MyPlugin.so MyPlugin.c -bE:MyPlugin.exp
7
7
7

AIX 以外の他のすべてのプラットフォームの場合、セキュリティー・プラグイン・ライブラリーは常に動的ロード可能共用オブジェクトであると見なされます。

8 8 8

GSS-API セキュリティー・プラグインはマルチフロー認証をサポートしない

8

GSS-API 認証は、クライアントからサーバーへの 1 つのトークンのフロー、およびサーバーからのクライアントへの 1 つのトークンのフローに制限されています。これらのトークンは、クライアントの場合 gss_init_sec_context()、サーバーの場合 gss_accept_sec_context() で取得できます。GSS-API プラグインが追加フローを試みると、セキュリティー・プラグインの予期しないエラーが発生し、接続が失敗します。

8 8 8

GSS-API セキュリティー・プラグインはメッセージ暗号化と署名をサポートしない

8

メッセージ暗号化と署名は、GSS-API セキュリティー・プラグインでは使用できません。

7 7 7

スタンドアロン・アプリケーションのトランザクションの暗黙的な終了

7

オペレーティング・システムに関係なく、アプリケーションの終了 (正常または異常) が生じると必ず、未解決の作業単位が暗黙的にロールバックします。

8 8 8

分散トランザクション・サポート

8

DB2 Universal Database (UDB) バージョン 8.2 の「新機能」の『DB2 Universal JDBC ドライバーの改善』セクションにおいて分散トランザクション・サポートの情報が誤っています。 8このセクションの最後の文は不正確です。正しい情報は、以下のとおりです。

8

バージョン 8.2 では、DB2 UDB は、XA 仕様に準拠する分散トランザクション処理をサポートします。このサポートで、Java 2 8プラットフォーム、Enterprise Edition (J2EE) Java トランザクション・サービス (JTS) および Java Transaction API (JTA) 仕様を実装します。

[ ページのトップ |前ページ | 次ページ | 目次 ]