ODBC Driver 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 或连接字符串关键字均匹配,可实现更佳性能。 (要匹配池中的连接,驱动程序将重置该属性。)由于重置以下参数需要额外的网络调用,因此性能会降低。

  • 如果以下两个或多个连接属性或连接关键字有所不同,则不使用共用连接。

    • Language
    • QuoteId
    • SQL_ATTR_TXN_ISOLATION
    • SQL_COPT_SS_QUOTED_IDENT
  • 如果以下任何连接关键字在你的连接字符串和共用连接字符串之间有所不同,则不使用共用连接。

    关键字 ODBC Driver 13 及更高版本 ODBC 驱动程序 11
    Address
    AnsiNPW
    App
    ApplicationIntent
    Authentication No
    ColumnEncryption No
    Database
    Encrypt
    Failover_Partner
    FailoverPartnerSPN
    MARS_Connection
    Network
    PWD
    Server
    ServerSPN
    TransparentNetworkIPResolution
    Trusted_Connection
    TrustServerCertificate
    UID
    WSID
  • 如果以下任何连接属性在你的连接字符串和共用连接字符串之间有所不同,则不使用共用连接。

    Attribute ODBC Driver 13 及更高版本 ODBC 驱动程序 11
    SQL_ATTR_CURRENT_CATALOG
    SQL_ATTR_PACKET_SIZE
    SQL_COPT_SS_ANSI_NPW
    SQL_COPT_SS_ACCESS_TOKEN No
    SQL_COPT_SS_AUTHENTICATION No
    SQL_COPT_SS_ATTACHDBFILENAME
    SQL_COPT_SS_BCP
    SQL_COPT_SS_COLUMN_ENCRYPTION No
    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
  • 无需进行额外的网络调用,该驱动程序即可重置和调整以下连接关键字和属性。 该驱动程序将重置这些参数,以确保该连接不会包含错误信息。

    在驱动程序管理器尝试将你的连接与池中的连接进行匹配时,不会考虑这些连接关键字。 (即使更改其中一个参数,仍可重复使用现有连接。驱动程序将根据需要重置这些选项。)无需进行额外的网络调用,即可在客户端中重置这些属性。

    关键字 ODBC Driver 13 及更高版本 ODBC 驱动程序 11
    AutoTranslate
    Description
    MultisubnetFailover
    QueryLog_On
    QueryLogFile
    QueryLogTime
    Regional
    StatsLog_On
    StatsLogFile

    如果更改以下连接属性之一,仍可重复使用现有连接。 该驱动程序将根据需要重置该值。 无需进行额外的网络调用,该驱动程序即可在客户端中重置这些属性。

    Attribute ODBC Driver 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

另请参阅

Windows 上的 Microsoft ODBC Driver for SQL Server