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 8Microsoft(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 8IBM 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}} です。
8DBPROPSET_DB2DATASOURCE には、次の 3 つのプロパティーがあります。 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 Types8
OLE DB のクライアント・カーソル・エンジンと OLE DB .NET Data Provider の CommandBuilder は、IBM DB2 OLE DB Provider により提供される列情報に基づいて更新および削除ステートメントを生成します。生成されたステートメントの WHERE 節に LONG タイプが使用されていると、LONG タイプは等価演算子での検索に使用できないため、ステートメントは失敗します。
8 8値 | 8意味 | 8
---|---|
VARIANT_TRUE | 8IBM DB2 OLE DB Provider が、DBCOLUMNFLAGS_ISLONG フラグを設定して、LONG タイプ (LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC、および LONG VARGRAPHIC FOR BIT DATA) を報告するようにします。これにより WHERE 節に長い列が使用されないようになります。 | 8
VARIANT_FALSE | 8DBCOLUMNFLAGS_ISLONG は、LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC、および LONG VARGRAPHIC FOR BIT DATA には設定されません。これがデフォルトです。 | 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 WChar8 8 8
値 | 8意味 | 8
---|---|
VARIANT_TRUE | 8OLE DB は、タイプ CHAR、VARCHAR、LONG VARCHAR、または CLOB の列を DBTYPE_WSTR として記述します。ISequentialStream で想定されるデータのコード・ページは、UCS-2 です。これがデフォルトです。 | 8
VARIANT_FALSE | 8OLE DB は、タイプ CHAR、VARCHAR、LONG VARCHAR、または CLOB の列を DBTYPE_STR として記述します。ISequentialStream で想定されるデータのコード・ページは、クライアントのローカル・コード・ページです。 | 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 Ordinal8
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 8値 | 8意味 | 8
---|---|
VARIANT_TRUE | 8プロバイダーは ORDINAL_POSITION でソートされた行セットを戻します。 | 8
VARIANT_FALSE | 8プロバイダーは TABLE_CATALOG、TABLE_SCHEMA、 8TABLE_NAME、COLUMN_NAME でソートされた行セットを戻します。これがデフォルトです。 | 8
トピック『DB2 Universal JDBC ドライバーのインストール』の DB2Binder 構文図では、DB2 Universal JDBC ドライバーの URL 構文が誤って定義されています。DB2Binder の URL 構文の正しい表現を次の図に示します。
8クライアント・アプリケーションは、Linux、(TM)UNIX、(R)および Windows(R) 版 DB2 Universal Database(TM) (UDB) の自動クライアント転送機能を使用すると、サーバーとの通信の消失からリカバリーできるため、最小限の中断で作業を継続することができます。
8サーバーがロックすると、そのサーバーに接続している各クライアントは通信エラーを受け取り、接続が終了して、アプリケーション・エラーになります。 8可用性が重要である場合は、重複セットアップまたはフェイルオーバー・サポートが必要です。 8フェイルオーバーは、別のサーバーが失敗したときに、操作を引き継ぐサーバーの機能です。 8いずれの場合にも、DB2 Universal JDBC ドライバー・クライアントは、新規サーバーまたは元のサーバーへの接続を再確立しようとします。接続先はフェイルオーバー・ノード上で実行している可能性があります。 8接続が再確立された場合、アプリケーションはトランザクション障害を通知する SQLException を受け取りますが、アプリケーションは次のトランザクションを続行できます。
8データベース管理者がサーバー・インスタンスの特定のデータベースで代替サーバーのロケーションを指定した後、1 次および代替サーバーのロケーションが接続時にクライアントに戻されます。 8DB2 Universal JDBC ドライバーは、Referenceable オブジェクト DB2ClientRerouteServerList を作成して、そのインスタンスを一時メモリーに格納します。通信が失われた場合、DB2 Universal JDBC ドライバーは、サーバーから戻されたサーバー情報を使用して、接続の再確立を試行します。
8clientRerouteServerListJNDIName DataSource プロパティーは、追加のクライアント転送サポートをクライアントで提供します。clientRerouteServerListJNDIName には次の 2 つの機能があります。 8
8clientRerouteServerListJNDIName は、代替サーバー情報の JNDI リポジトリー内で DB2ClientRerouteServerList インスタンスへの JNDI 参照を識別します。1 次サーバーへの接続が成功すると、そのサーバーからの情報により、clientRerouteServerListJNDIName によって提供される代替サーバー情報が上書きされます。 8DB2 Universal JDBC ドライバーは、clientRerouteServerListJNDIName プロパティーが定義されていると、フェイルオーバー後に、更新された情報を JNDI ストアに伝搬しようとします。 8clientRerouteServerListJNDIName が指定されると、DB2ClientRerouteServerList に指定された 1 次サーバー情報が接続に使用されます。1 次サーバーが指定されない場合は、データ・ソースに指定された serverName 情報が使用されます。
8DB2ClientRerouteServerList は、次の 4 つのプロパティーを持つシリアライズ可能な Java(TM) Bean です。 8
88これらのプロパティーにアクセスする getter および setter メソッドが用意されています。DB2ClientRerouteServerList クラスの定義は、次のとおりです。 8
8package 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その後、アプリケーションはトランザクションを再試行できます。
ストレージをセットアップして DB2ClientRerouteServerList を永続にするには、以下の手順を実行します。 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);
datasource.setClientRerouteServerListJNDIName("serverList");
DB2 Universal JDBC ドライバーの構成プロパティーによって、そのドライバー全体にわたる有効範囲を持つプロパティー値を設定できます。 7それらの設定値は、アプリケーションおよび DataSource インスタンス全体に適用されます。 7アプリケーションのソース・コードや DataSource の特性を変更せずに、設定値を変更できます。
7それぞれの DB2 Universal JDBC ドライバー構成プロパティー設定の形式は、次のとおりです。 7
7property=value
7構成プロパティーが db2.jcc.override で始まる場合は、構成プロパティーはすべての接続に適用でき、同じプロパティー名を持つ Connection または DataSource プロパティーをオーバーライドします。 7構成プロパティーが db2.jcc または db2.jcc.default で始まる場合は、構成プロパティー値がデフォルトになります。 7その値は Connection または DataSource プロパティー設定値でオーバーライドされます。
7構成プロパティーを設定するには、以下のようにします。
7 7スタンドアロン Java アプリケーションの場合、java コマンドの実行時にそれぞれの構成プロパティーに対して -Dproperty=value を指定することにより、構成プロパティーを Java システム・プロパティーとして設定できます。
スタンドアロン Java アプリケーションの場合、java コマンドの実行時に -Ddb2.jcc.propertiesFile=path オプションを指定することによって構成プロパティーを設定できます。
DB2JccConfiguration.properties は、スタンドアロン・ファイルである場合と、JAR ファイルに組み込まれている場合があります。
7 7DB2JccConfiguration.properties がスタンドアロン・ファイルの場合は、DB2JccConfiguration.properties のパスが CLASSPATH 連結内にある必要があります。
7 7DB2JccConfiguration.properties が JAR ファイル内にある場合は、JAR ファイルが CLASSPATH 連結内にある必要があります。
以下の DB2 Universal JDBC ドライバー構成プロパティーを設定できます。 7すべてのプロパティーはオプションです。
7db2.jcc.override.traceFile プロパティー値の完全修飾ファイル名を指定します。
7 7db2.jcc.override.traceFile プロパティーは、Connection または DataSource オブジェクトの traceFile プロパティーをオーバーライドします。
7 7例えば、以下の設定を db2.jcc.override.traceFile に対して指定すると、DB2 Universal JDBC ドライバー Java コードの、/SYSTEM/tmp/jdbctrace という名前のファイルへのトレースが使用可能に設定されます。 7
7db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace
7トレース・プロパティーは、IBM ソフトウェア・サポートの指示を受けて設定してください。
7db2secFreeToken 関数 (トークンによって保持される空きメモリー) が、db2secGssapiServerAuthFunctions_1 ユーザー認証プラグイン API の一部ではなくなりました。
8 8 8セキュリティー・プラグインのデプロイメントが適切にコード化、検討、およびテストされていないと、DB2 Universal Database (UDB) インストールの整合性が損なわれることがあります。DB2 UDB では一般的な種類の多くの障害に対して予防措置を講じていますが、ユーザー作成のセキュリティー・プラグインがデプロイされた場合、完全な整合性を保証できません。
7 7 7ユーザー独自のカスタマイズ済みセキュリティー・プラグインを使用する場合、CLP または動的 SQL ステートメントによって発行される接続ステートメントで、最大 255 文字のユーザー ID を使用できます。
7 7 7db2secGetGroupsForUser、db2secValidatePassword、および db2secGetAuthIDs API の場合、入力パラメーター dbname はヌルでもかまいません。その場合、それに対応する長さ入力パラメーター dbnamelen は 0 に設定されます。
7 7 7.so は、すべての Linux および UNIX プラットフォームで、ユーザー作成のセキュリティー・プラグイン・ライブラリーのファイル名拡張子として受け入れられるようになりました。
7AIX(R) では、セキュリティー・プラグイン・ライブラリーの拡張子は .a または .so とすることができます。 7両方のバージョンのプラグイン・ライブラリーが存在する場合は、.a バージョンが使用されます。
7PA-RISC 上の HP-UX では、セキュリティー・プラグイン・ライブラリーの拡張子は .sl または .so とすることができます。 7両方のバージョンのプラグイン・ライブラリーが存在する場合は、.sl バージョンが使用されます。
7他のすべての Linux および UNIX プラットフォームでは、.so が、セキュリティー・プラグイン・ライブラリーに対してサポートされる唯一のファイル名拡張子です。
7 7 7AIX では、セキュリティー・プラグイン・ライブラリーのファイル名拡張子は .a または .so とすることができます。 7プラグイン・ライブラリーをロードするために使用されるメカニズムは、使用される拡張子によって異なります。 7
7例えば、32 ビットのアーカイブ・スタイル・プラグイン・ライブラリーを作成するには、次のようにします。 7
7 xlc_r -qmkshrobj -o shr.o MyPlugin.c -bE:MyPlugin.exp
7 ar rv MyPlugin.a shr.o
7xlc_r -qmkshrobj -o MyPlugin.so MyPlugin.c -bE:MyPlugin.exp7
AIX 以外の他のすべてのプラットフォームの場合、セキュリティー・プラグイン・ライブラリーは常に動的ロード可能共用オブジェクトであると見なされます。
8 8 8GSS-API 認証は、クライアントからサーバーへの 1 つのトークンのフロー、およびサーバーからのクライアントへの 1 つのトークンのフローに制限されています。これらのトークンは、クライアントの場合 gss_init_sec_context()、サーバーの場合 gss_accept_sec_context() で取得できます。GSS-API プラグインが追加フローを試みると、セキュリティー・プラグインの予期しないエラーが発生し、接続が失敗します。
8 8 8メッセージ暗号化と署名は、GSS-API セキュリティー・プラグインでは使用できません。
7 7 7オペレーティング・システムに関係なく、アプリケーションの終了 (正常または異常) が生じると必ず、未解決の作業単位が暗黙的にロールバックします。
8 8 8DB2 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) 仕様を実装します。
[ ページのトップ |前ページ | 次ページ | 目次 ]