リンク・オプション
TimesTenアプリケーションは、TimesTen ODBC直接ドライバまたはODBCクライアント・ドライバを使用した直接リンク、汎用ドライバ・マネージャを使用したリンク、またはTimesTenドライバ・マネージャを使用したリンクが可能です。
ODBCドライバ・マネージャを使用しないリンクに関する考慮事項
TimesTenでのみ使用するアプリケーションは、ドライバ・マネージャ(つまりTimesTenドライバ・マネージャとのリンク)を使用せずに、TimesTen ODBC直接ドライバまたはODBCクライアント・ドライバと直接リンクできます。
汎用ドライバ・マネージャを使用せずにリンクすると、パフォーマンスのオーバーヘッドが回避され、TimesTenにアクセスする簡単な方法になります。ただし、ドライバ・マネージャを使用せずにリンクされるアプリケーションを開発する開発者は、次の問題について注意する必要があります。
-
アプリケーションは、リンクされているドライバを使用するDSN (データソース名)にのみ接続できます。他のベンダーのデータベースにも、TimesTenドライバのTimesTen DSNにも接続できません。(DSNは、TimesTenデータベースを識別する論理名で、データベースへの接続に使用する接続属性のセットです。)
-
WindowsのODBCトレースは利用できません。
-
ODBCカーソル・ライブラリは利用できません。
-
アプリケーションでは、
SQLDataSources
やSQLDrivers
などのドライバ・マネージャで通常実行されるODBC関数は使用できません。 -
SQLFreeStmt(..., SQL_CLOSE)
ではなく、SQLCancel
を使用してカーソルをクローズするアプリケーションは、SQL_SUCCESS_WITH_INFO
のリターン・コードおよびSQL State01S05
を受信します。この警告は、内部の状態をドライバ・マネージャで管理するために使用されます。アプリケーションでは、この警告は成功として処理されます。
汎用ODBCドライバ・マネージャを使用してリンクする際の考慮事項
ドライバ・マネージャを使用してリンクするアプリケーションは、ODBCドライバを参照するすべてのDSNに接続でき、別々のODBCドライバを使用する複数のDSNに同時に接続することもできます。
ただし、Windows以外のほとんどのプラットフォームでは、ドライバ・マネージャはデフォルトで使用可能ではないことに注意してください。また、汎用ドライバ・マネージャを使用すると、すべてのODBC関数コールにかなりの同期オーバーヘッドが追加される可能性があるため、次のような制限があります。
-
TimesTenオプション
TT_PREFETCH_COUNT
は、ドライバ・マネージャにリンクしているアプリケーションでは使用できません。TT_PREFETCH_COUNT
オプションの使用の詳細は、「複数のデータ行のプリフェッチ」を参照してください。 -
アプリケーションでは、TimesTen固有の
TT_PREFETCH_CLOSE
接続オプションを設定または再設定できません。「問合せのパフォーマンスの最適化」を参照してください。 -
アプリケーションが汎用ドライバ・マネージャとリンクされている場合、トランザクション・ログAPI (XLA)コールは使用できません。
-
TimesTenで使用する場合、ODBC C型の
SQL_C_BIGINT
、SQL_C_TINYINT
およびSQL_C_WCHAR
は、汎用ドライバ・マネージャとリンクされているアプリケーションではサポートされません。シグネチャにこれらの型が含まれるメソッドをコールすることはできません。
TimesTenドライバ・マネージャを使用してリンクする際の考慮事項
この項では、アプリケーションをTimesTenドライバ・マネージャとリンクする際に、開発者が考慮する必要がある動作について説明します。
前述の「汎用ODBCドライバ・マネージャを使用してリンクする際の考慮事項」の項に記載されているODBCドライバ・マネージャの制限事項は、TTDMには当てはまりません。
TTDMとリンクするときは、次の動作に注意してください。
-
ODBC 3アプリケーションは、
SQLSetEnvAttr
をコールしてSQL_ATTR_ODBC_VERSION
を値SQL_OV_ODBC3
に設定することで、使用しているODBCバージョンを宣言する必要があります。TTDMは、ODBCバージョン(SQL_OV_ODBC3設定がない場合はODBC 2.5)を検出し、その動作の一部の側面を適宜調整します。また、SQLSetEnvAttr
コールを基礎となるドライバに渡します。 -
接続タイプ(直接またはクライアント)は、接続に使用されるDSNまたは接続文字列に基づいて、接続時にTTDMによって決定されます。
-
アプリケーションがTTDMで関数を最初にコールすると、TTDMは直接ドライバ・ライブラリ(
libtten.so
)、クライアント・ライブラリ(libttclient.so
)およびユーティリティ・ライブラリ(libttutil.so
)を動的にロードしようとします。これらのライブラリの一部のロードは、TimesTenのインストールによっては失敗することがあります。たとえば、クライアントのみのインスタンスでは、直接モード・ライブラリまたはユーティリティ・ライブラリはありません。TTDMはこれらの機能を使用不可としてマークし、アプリケーションが使用不可の関数をコールすると、それを示すエラー・コードを受け取ります。 -
アプリケーションがODBC関数またはTimesTen API関数をコールすると、その関数のTTDMエクスポート・バージョンが最初に実行されます。ほとんどの場合、このTTDMスタブ関数は、最小限の検証チェックを実行し、関連するTimesTenドライバから実際のTimesTen関数をコールして、同じパラメータを渡します。ドライバ関数が返すものはすべて、コール元のアプリケーションに返されます。
ヒント:
次のことに注意してください。
-
TTDMには、アプリケーションがTTDMを使用しているかどうか、またはTimesTenドライバ・ライブラリの1つと直接リンクされているかどうかをプログラムで判断するために使用できる拡張機能もあります。「ODBC 3.5のSQLSetConnectAttrおよびSQLGetConnectAttrでの属性サポート」および「ODBC 3.5のSQLGetEnvAttrでの属性サポート」に記載されている拡張機能がコールされたときに、
SQL_ERROR
の戻り値で、アプリケーションでTTDMが使用されていないことが示されます。 -
TTDMは、ドライバ・マネージャ関数
SQLDrivers
およびSQLDataSources
をサポートしていません。