OLE DB Provider for SQL Server のドライバー対応接続プール

ODBC ドライバーのダウンロード

ODBC Driver for SQL Server は、ドライバー対応の接続プールをサポートしています。 この記事では、Windows 上の Microsoft ODBC Driver for SQL Server のドライバー対応接続プールに対して行われた機能強化について説明します。

  • 接続プロパティが何であれ、SQLDriverConnect を使用する接続は、SQLConnect を使用する接続とは別のプールに移動されます。

  • SQL Server 認証とドライバー対応接続プールを使用する場合、ドライバーでは、プール内の接続を分離するために、現在のスレッドの Windows ユーザーのセキュリティ コンテキストが使用されません。 つまり、SQL Server 認証での Windows での権限借用シナリオでの接続と、接続パラメーターが同じで、バックエンドとの接続に同じ SQL Server 認証資格証明を使用する場合、別の Windows ユーザーが同じプール接続を使用できる可能性があります。 Windows 認証とドライバー対応接続プールを使用する場合、ドライバーでは、プール内の接続を分離するために現在の Windows ユーザーのセキュリティ コンテキストが使用されます。 つまり、Windows での権限借用のシナリオでは、接続で同じパラメーターを使用していても、別の Windows ユーザーは同じ接続を使用しません。

  • Microsoft Entra ID (旧称 Azure Active Directory) とドライバー対応接続プールを使用する場合、ドライバーでは、認証値を使用して、接続プールのメンバーシップも決定されます。

  • ドライバー対応接続プールは、無効な接続がプールから返されないようにします。

  • ドライバー対応接続プールは、ドライバーに固有の接続属性を認識します。 そのため、接続で読み取り専用に設定された SQL_COPT_SS_APPLICATION_INTENT を使用する場合、その接続では独自の接続プールが取得されます。

  • SQL_COPT_SS_ACCESS_TOKEN 属性を設定すると、接続が個別にプールされます

次のいずれかの接続属性 ID または接続文字列キーワードが、接続文字列と、プールされた接続文字列の間で異なる場合、ドライバーはプールされた接続を使用します。 ただし、すべての接続属性 ID または接続文字列キーワードが一致する場合、パフォーマンスは向上します。 (プール内の接続を一致させるには、ドライバーで属性をリセットします。) 次のパラメーターをリセットするには追加のネットワーク呼び出しが必要になるため、パフォーマンスが低下します。

  • 次の接続属性または接続キーワードのうち 2 つ以上が異なる場合、プールされた接続は使用されません。

    • Language
    • QuoteId
    • SQL_ATTR_TXN_ISOLATION
    • SQL_COPT_SS_QUOTED_IDENT
  • 接続文字列とプールされた接続文字列の次のいずれかの接続キーワードの間に違いがある場合、プールされた接続は使用されません。

    Keyword ODBC ドライバー 13 以降 ODBC ドライバー 11
    Address はい イエス
    AnsiNPW イエス イエス
    App イエス イエス
    ApplicationIntent イエス イエス
    Authentication 有効 無効
    ColumnEncryption イエス 無効
    Database イエス イエス
    Encrypt イエス イエス
    Failover_Partner イエス イエス
    FailoverPartnerSPN イエス イエス
    MARS_Connection イエス イエス
    Network イエス イエス
    PWD イエス イエス
    Server イエス イエス
    ServerSPN イエス イエス
    TransparentNetworkIPResolution イエス イエス
    Trusted_Connection イエス イエス
    TrustServerCertificate イエス イエス
    UID イエス イエス
    WSID イエス はい
  • 接続文字列とプールされた接続文字列の次のいずれかの接続属性の間に違いがある場合、プールされた接続は使用されません。

    属性 ODBC ドライバー 13 以降 ODBC ドライバー 11
    SQL_ATTR_CURRENT_CATALOG はい イエス
    SQL_ATTR_PACKET_SIZE イエス イエス
    SQL_COPT_SS_ANSI_NPW イエス イエス
    SQL_COPT_SS_ACCESS_TOKEN 有効 無効
    SQL_COPT_SS_AUTHENTICATION イエス 無効
    SQL_COPT_SS_ATTACHDBFILENAME イエス イエス
    SQL_COPT_SS_BCP イエス イエス
    SQL_COPT_SS_COLUMN_ENCRYPTION 有効 無効
    SQL_COPT_SS_CONCAT_NULL イエス イエス
    SQL_COPT_SS_ENCRYPT イエス イエス
    SQL_COPT_SS_FAILOVER_PARTNER イエス イエス
    SQL_COPT_SS_FAILOVER_PARTNER_SPN イエス イエス
    SQL_COPT_SS_INTEGRATED_SECURITY イエス イエス
    SQL_COPT_SS_MARS_ENABLED イエス イエス
    SQL_COPT_SS_OLDPWD イエス イエス
    SQL_COPT_SS_SERVER_SPN イエス イエス
    SQL_COPT_SS_TRUST_SERVER_CERTIFICATE イエス イエス
    SSPROP_AUTH_REPL_SERVER_NAME イエス イエス
    SQL_COPT_SS_TNIR 有効 いいえ
  • ドライバーは追加でネットワーク呼び出しを行うことなく、次の接続キーワードと属性をリセットおよび調整できます。 接続に誤った情報が決して含まれないようにするために、ドライバーによってこれらのパラメーターはリセットされます。

    これらの接続キーワードは、ドライバー マネージャーによってプール内の接続とユーザーの接続を一致させる試みが行われる場合は考慮されません (これらのパラメーターのいずれかを変更した場合でも、既存の接続を再利用できます。必要に応じてドライバーによってオプションがリセットされます)。これらの属性は、追加でネットワーク呼び出しを行わずに、クライアント側でリセットできます。

    Keyword ODBC ドライバー 13 以降 ODBC ドライバー 11
    AutoTranslate はい イエス
    Description イエス イエス
    MultisubnetFailover イエス イエス
    QueryLog_On イエス イエス
    QueryLogFile イエス イエス
    QueryLogTime イエス イエス
    Regional イエス イエス
    StatsLog_On イエス イエス
    StatsLogFile イエス はい

    次のいずれかの接続属性を変更した場合、既存の接続を再利用できます。 必要に応じて、ドライバーによって値がリセットされます。 ドライバーは追加のネットワーク呼び出しを行うことなく、クライアントでこれらの属性をリセットできます。

    属性 ODBC ドライバー 13 以降 ODBC ドライバー 11
    すべてのステートメント属性 はい イエス
    SQL_ATTR_AUTOCOMMIT イエス イエス
    SQL_ATTR_CONNECTION_TIMEOUT イエス イエス
    SQL_ATTR_DISCONNECT_BEHAVIOR SQL_ATTR_CONNECTION_TIMEOUT イエス イエス
    SQL_ATTR_LOGIN_TIMEOUT イエス イエス
    SQL_ATTR_ODBC_CURSORS イエス イエス
    SQL_COPT_SS_PERF_DATA イエス イエス
    SQL_COPT_SS_PERF_DATA_LOG イエス イエス
    SQL_COPT_SS_PERF_DATA_LOG_NOW イエス イエス
    SQL_COPT_SS_PERF_QUERY イエス イエス
    SQL_COPT_SS_PERF_QUERY_INTERVAL イエス イエス
    SQL_COPT_SS_PERF_QUERY_LOG イエス イエス
    SQL_COPT_SS_PRESERVE_CURSORS イエス イエス
    SQL_COPT_SS_TRANSLATE イエス イエス
    SQL_COPT_SS_USER_DATA イエス イエス
    SQL_COPT_SS_WARN_ON_CP_ERROR イエス はい

参照

Microsoft ODBC Driver for SQL Server on Windows