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 つ以上が異なる場合、プールされた接続は使用されません。
LanguageQuoteIdSQL_ATTR_TXN_ISOLATIONSQL_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イエス はい