ドライバー対応の接続プールは、Windows 8 のドライバー マネージャーの新機能です。 ドライバー対応の接続プーリングを使用すると、ドライバー ライターは ODBC ドライバーの接続プーリング動作をカスタマイズできます。
注
ドライバー対応の接続プールは、カーソル ライブラリではサポートされていません。 ドライバー対応の接続プールが有効になっているときに、SQLSetConnectAttr を介してカーソル ライブラリを有効にしようとすると、アプリケーションでエラー メッセージが表示されます。
ドライバー対応の接続プールは、ドライバー マネージャーの接続プーリングに関連する次の問題に対処します。
プールの断片化 ドライバー マネージャーは、新しい接続要求の接続文字列と完全に一致する場合にのみ、プールから接続を返します。 ドライバー マネージャーが完全に一致する必要がある理由の 1 つは、ドライバー マネージャーがドライバー固有のすべての接続文字列キーワードとその値を理解していないということです。 ただし、一部の接続文字列キーワード値 (データベースの名前など) では完全に一致する必要がない場合があります。これは、ドライバーが新しい接続を開くために必要な時間よりも短い時間でデータベースを変更できるためです (正確な時間差はデータ ソースによって異なります)。 また、一部の接続属性 (SQL_ATTR_CURRENT_CATALOG など) の違いは、他の属性 (SQL_ATTR_LOGIN_TIMEOUT など) の違いよりも変更に時間がかかる場合があります。 これにより、ドライバー マネージャーがプールからの最も低コストで再利用可能な接続を使用できなくなる可能性もあります。 ドライバーが多数の新しい接続を作成する必要がある場合、アプリケーションのパフォーマンスが低下し、データ ソースのスケーラビリティが低下する可能性があります。 ドライバーは接続要求のためにプール内の接続を再利用するコストをより適切に見積もることができるため、ドライバー対応の接続プールを使用してプールの断片化を減らすことができます。
アプリケーションの優先設定を考慮しない 一部のデータ ソースでは 、(一部の属性をリセットする場合と比較して) 新しい接続を効率的に開くことができるため、アプリケーションでは、プールから少し不一致の接続を再利用して一部の値をリセットするのではなく、新しい接続を開く方が好ましい場合があります (ただし、接続プールの初期化フレーズの間は低速になる可能性があります)。 ただし、一部のアプリケーションでは、サーバーの負荷が小さくなり、開く接続が少なくなる場合がありますが、正しい動作のために不一致を修正するためのコストが大きくなる可能性があります。 ドライバー対応の接続プールがないと、ドライバー マネージャーではドライバー固有のすべての接続属性が認識されないため、この種類の優先設定を効果的に指定することはできません。 ドライバー対応の接続プールを使用すると、ドライバーは (SQLSetConnectAttr のドライバー固有の属性を持つ) ユーザー設定を取得できるため、ユーザーの設定に基づいてプールからの接続を再利用するコストをより適切に見積もることができます。
ドライバー対応の接続プールの詳細については、「 ODBC ドライバーでの Connection-Pool 認識の開発」を参照してください。
ドライバーのサポートの決定
ドライバー対応の接続プールは、ドライバーがサポートしていない可能性があるオプションの機能です。 ドライバーでサポートされているかどうかを確認するには、SQLGetInfo のSQL_DRIVER_AWARE_POOLING_SUPPORTED InfoType を使用します。
Driver-Aware 接続プールを有効にする方法
アプリケーションは、SQL_ATTR_CONNECTION_POOLING属性を SQLSetEnvAttr でSQL_CP_DRIVER_AWAREに設定することで、ドライバーの接続プール認識を使用できます。 ドライバーが接続プールの認識をサポートしていない場合は、ドライバー マネージャーの接続プールが使用されます (SQL_CP_DRIVER_AWAREではなく、SQL_CP_ONE_PER_HENVが指定されている場合と同じです)。 ODBC 2.x および 3.x アプリケーションでは、この機能を有効にすることができます。