DSN 和连接字符串关键字及属性

本文列出了 SQL Server 的 ODBC 驱动程序中可用的连接字符串和 DSN 的关键字,以及用于 SQLSetConnectAttrSQLGetConnectAttr 的连接属性。

支持的 DSN、连接字符串关键字及连接属性

下表列出了每个平台可用的关键词和属性(L:Linux;M:macOS;W:Windows)。 选择关键字或属性以获取更多详细信息。

DSN / 连接字符串关键字 连接属性 平台
地址 LMW
Address LMW
AnsiNPW SQL_COPT_SS_ANSI_NPW LMW
APP LMW
ApplicationIntent SQL_COPT_SS_APPLICATION_INTENT LMW
AttachDBFileName SQL_COPT_SS_ATTACHDBFILENAME LMW
身份验证 SQL_COPT_SS_AUTHENTICATION LMW
AutoTranslate SQL_COPT_SS_TRANSLATE LMW
ClientCertificate LMW
ClientKey LMW
ColumnEncryption SQL_COPT_SS_COLUMN_ENCRYPTION LMW
ConcatNullYieldsNull (v18.6+) SQL_COPT_SS_CONCAT_NULL LMW
ConnectRetryCount SQL_COPT_SS_CONNECT_RETRY_COUNT LMW
ConnectRetryInterval SQL_COPT_SS_CONNECT_RETRY_INTERVAL LMW
Database SQL_ATTR_CURRENT_CATALOG LMW
说明 LMW
驱动程序 LMW
DSN LMW
Encrypt SQL_COPT_SS_ENCRYPT LMW
Failover_Partner SQL_COPT_SS_FAILOVER_PARTNER W
FailoverPartnerSPN SQL_COPT_SS_FAILOVER_PARTNER_SPN W
FileDSN LMW
GetDataExtensions(版本 18.0 及更高版本) SQL_COPT_SS_GETDATA_EXTENSIONS LMW
HostnameInCertificate(版本 18.0 及更高版本) LMW
IpAddressPreference (v18.1+) LMW
KeepAlive(v17.4+;仅限 17.8 版本之前的 DSN) LMW
KeepAliveInterval(v17.4+;仅适用于 17.8 之前的 DSN) LMW
KeystoreAuthentication LMW
KeystorePrincipalId LMW
KeystoreSecret LMW
语言 LMW
LongAsMax(版本 18.0 及更高版本) SQL_COPT_SS_LONGASMAX LMW
MARS_Connection SQL_COPT_SS_MARS_ENABLED LMW
MultiSubnetFailover SQL_COPT_SS_MULTISUBNET_FAILOVER LMW
Net LMW
Network LMW
PWD LMW
QueryLog_On SQL_COPT_SS_PERF_QUERY W
QueryLogFile SQL_COPT_SS_PERF_QUERY_LOG W
QueryLogTIme SQL_COPT_SS_PERF_QUERY_INTERVAL W
QuotedId SQL_COPT_SS_QUOTED_IDENT LMW
Regional LMW
复制 LMW
RetryExec (18.1+) LMW
SaveFile LMW
Server LMW
ServerCertificate (v18.1+) LMW
ServerSPN SQL_COPT_SS_SERVER_SPN LMW
StatsLog_On SQL_COPT_SS_PERF_DATA W
StatsLogFile SQL_COPT_SS_PERF_DATA_LOG W
TransparentNetworkIPResolution SQL_COPT_SS_TNIR LMW
Trusted_Connection SQL_COPT_SS_INTEGRATED_SECURITY LMW
TrustServerCertificate SQL_COPT_SS_TRUST_SERVER_CERTIFICATE LMW
UID LMW
UseFMTONLY LMW
WSID LMW
SQL_ATTR_ACCESS_MODE
(SQL_ACCESS_MODE)
LMW
SQL_ATTR_ASYNC_DBC_EVENT W
SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE W
SQL_ATTR_ASYNC_DBC_PCALLBACK W
SQL_ATTR_ASYNC_DBC_PCONTEXT W
SQL_ATTR_ASYNC_ENABLE W
SQL_ATTR_AUTO_IPD LMW
SQL_ATTR_AUTOCOMMIT
(SQL_AUTOCOMMIT)
LMW
SQL_ATTR_CONNECTION_DEAD LMW
SQL_ATTR_CONNECTION_TIMEOUT LMW
SQL_ATTR_DBC_INFO_TOKEN LMW
SQL_ATTR_LOGIN_TIMEOUT
(SQL_LOGIN_TIMEOUT)
LMW
SQL_ATTR_METADATA_ID LMW
SQL_ATTR_ODBC_CURSORS
(SQL_ODBC_CURSORS)
LMW
SQL_ATTR_PACKET_SIZE
(SQL_PACKET_SIZE)
LMW
SQL_ATTR_QUIET_MODE
(SQL_QUIET_MODE)
LMW
SQL_ATTR_RESET_CONNECTION
(SQL_COPT_SS_RESET_CONNECTION)
LMW
SQL_ATTR_TRACE
(SQL_OPT_TRACE)
LMW
SQL_ATTR_TRACEFILE
(SQL_OPT_TRACEFILE)
LMW
SQL_ATTR_TRANSLATE_LIB
(SQL_TRANSLATE_DLL)
LMW
SQL_ATTR_TRANSLATE_OPTION
(SQL_TRANSLATE_OPTION)
LMW
SQL_ATTR_TXN_ISOLATION
(SQL_TXN_ISOLATION)
LMW
SQL_COPT_SS_ACCESS_TOKEN LMW
SQL_COPT_SS_ANSI_OEM W
SQL_COPT_SS_AUTOBEGINTXN LMW
SQL_COPT_SS_BCP LMW
SQL_COPT_SS_BROWSE_CACHE_DATA LMW
SQL_COPT_SS_BROWSE_CONNECT LMW
SQL_COPT_SS_BROWSE_SERVER LMW
SQL_COPT_SS_CEKEYSTOREDATA LMW
SQL_COPT_SS_CEKEYSTOREPROVIDER LMW
SQL_COPT_SS_CLIENT_CONNECTION_ID LMW
SQL_COPT_SS_CONNECTION_DEAD LMW
SQL_COPT_SS_DATACLASSIFICATION_VERSION (v17.4.2+) LMW
SQL_COPT_SS_ENLIST_IN_DTC W
SQL_COPT_SS_ENLIST_IN_XA LMW
SQL_COPT_SS_FALLBACK_CONNECT LMW
SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD LMW
SQL_COPT_SS_MUTUALLY_AUTHENTICATED LMW
SQL_COPT_SS_OLDPWD LMW
SQL_COPT_SS_PERF_DATA_LOG_NOW W
SQL_COPT_SS_PRESERVE_CURSORS LMW
SQL_COPT_SS_SPID (v17.5+) LMW
SQL_COPT_SS_TXN_ISOLATION LMW
SQL_COPT_SS_USER_DATA LMW
SQL_COPT_SS_WARN_ON_CP_ERROR LMW

以下是一些未在《将连接字符串关键字与 SQL Server Native Client 配合使用》、SQLSetConnectAttrSQLSetConnectAttr Function 中说明的连接字符串关键字和连接属性。

说明

描述数据来源。

SQL_COPT_SS_ANSI_OEM

控制 ANSI 到 OEM 的数据转换。

属性值 说明
SQL_AO_OFF(默认值) 翻译还没完成。
SQL_AO_ON 转换已完成。

SQL_COPT_SS_AUTOBEGINTXN

从 17.6 版本开始,在自动提交关闭时,使用此选项控制是否在 ROLLBACKCOMMIT 之后自动执行 BEGIN TRANSACTION

属性值 说明
SQL_AUTOBEGINTXN_ON(默认值) COMMITBEGIN TRANSACTION 之后自动插入 ROLLBACK
SQL_AUTOBEGINTXN_OFF ROLLBACKCOMMIT 之后,不会自动添加 BEGIN TRANSACTION

SQL_COPT_SS_FALLBACK_CONNECT

控制 SQL Server 备援连接的使用。 该选项现已不再支持。

属性值 说明
SQL_FB_OFF(默认值) 禁用备用连接。
SQL_FB_ON 启用备用连接。

新的连接字符串关键字和连接属性

身份验证 - SQL_COPT_SS_AUTHENTICATION

设置连接到 SQL Server 时要使用的身份验证模式。 有关详细信息,请参阅在 ODBC 驱动程序中使用 Microsoft Entra ID

关键词价值 属性值 说明
SQL_AU_NONE(默认值) 未设置。 其他属性的组合可确定身份验证模式。
SqlPassword SQL_AU_PASSWORD SQL Server 身份验证(使用用户名和密码)。
ActiveDirectoryIntegrated SQL_AU_AD_INTEGRATED Microsoft Entra 集成身份验证。
ActiveDirectoryInteractive SQL_AU_AD_INTERACTIVE Microsoft Entra 交互式认证。
ActiveDirectoryMsi SQL_AU_AD_MSI Microsoft Entra 托管标识身份验证。 对于用户分配身份, UID 设置为用户身份的对象ID。
ActiveDirectoryServicePrincipal SQL_AU_AD_SPA Microsoft Entra 服务主体身份验证。 UID 被设置为服务主体的客户端 ID。 PWD 设置为客户端密钥。
ActiveDirectoryPassword SQL_AU_AD_PASSWORD [已弃用]Microsoft Entra 密码身份验证。

ActiveDirectoryPassword 已弃用。 有关详细信息,请参阅 ActiveDirectoryPassword 已弃用
SQL_AU_RESET 未设置。 替代任何 DSN 或连接字符串设置。

注意

使用 Authentication 关键字或属性时,请在连接字符串、DSN 或连接属性中显式将 Encrypt 设置为所需值。 有关详细信息,请参阅在 SQL Server Native Client 中使用连接字符串关键字

列加密 - SQL_COPT_SS_COLUMN_ENCRYPTION

控制透明列加密功能(Always Encrypted)。 有关详细信息,请参阅在 ODBC Driver for SQL Server 中使用 Always Encrypted

关键词价值 属性值 说明
Enabled SQL_CE_ENABLED 启用 Always Encrypted。
Disabled(默认值) SQL_CE_DISABLED 禁用“始终加密”功能。
SQL_CE_RESULTSETONLY 仅启用解密(结果和返回值)。

ConcatNullYieldsNull - SQL_COPT_SS_CONCAT_NULL

控制连接字符串时是否使用对 NULL 的 ISO 处理方式。 有关详细信息,请参阅 SET CONCAT_NULL_YIELDS_NULL

关键词价值 属性值 说明
Yes(默认值) SQL_CN_ON NULL 串联后得到 NULL
No SQL_CN_OFF NULL 串联生成字符串。

加密

指定连接是否通过网络使用 TLS 加密。 可能的值为 yes/mandatory(18.0+)、no/optional(18.0+) 和 strict(18.0+)。 在版本 18.0+ 中默认值为 yes,在早期版本中为 no

无论 Encrypt 设置如何,始终加密服务器登录凭据(用户名和密码)。

TrustServerCertificateForce Encryption和服务器端Encrypt设置决定了连接是否通过网络加密。 下表显示了这些设置的效果。

ODBC Driver 18 和更高版本

加密设置 信任服务器证书 服务器强制加密 结果
不检查服务器证书。
在客户端和服务器之间发送的数据没有加密。
不检查服务器证书。
在客户端和服务器之间发送的数据没有加密。
服务器证书已通过检查。
在客户端和服务器之间发送的数据已加密。
不检查服务器证书。
在客户端和服务器之间发送的数据已加密。
服务器证书已通过检查。
在客户端和服务器之间发送的数据已加密。
不检查服务器证书。
在客户端和服务器之间发送的数据已加密。
服务器证书已通过检查。
在客户端和服务器之间发送的数据已加密。
不检查服务器证书。
在客户端和服务器之间发送的数据已加密。
严格 - - TrustServerCertificate 将被忽略。 服务器证书已通过检查。
在客户端和服务器之间发送的数据已加密。

注意

Strict 值仅适用于支持 TDS 8.0 连接的服务器。

ODBC Driver 17 及更低版本

加密设置 信任服务器证书 服务器强制加密 结果
不检查服务器证书。
在客户端和服务器之间发送的数据没有加密。
不检查服务器证书。
在客户端和服务器之间发送的数据没有加密。
服务器证书已通过检查。
在客户端和服务器之间发送的数据已加密。
不检查服务器证书。
在客户端和服务器之间发送的数据已加密。
不检查服务器证书。
在客户端和服务器之间发送的数据已加密。
不检查服务器证书。
在客户端和服务器之间发送的数据已加密。
服务器证书已通过检查。
在客户端和服务器之间发送的数据已加密。
不检查服务器证书。
在客户端和服务器之间发送的数据已加密。

透明网络IP解析 - SQL_COPT_SS_TNIR

控制透明网络 IP 解析功能,这是 ODBC 驱动程序的旧版多 IP 回退机制。 当MultiSubnetFailover=Yes时,此设置不会影响连接顺序;这是 Azure SQL 数据库、Azure SQL 托管实例、Microsoft Fabric 中的 SQL 数据库、可用性组侦听器和故障转移群集实例的推荐设置。 更多信息请参见 使用ODBC驱动实现透明网络IP解析高可用性与灾难恢复

关键词价值 属性值 说明
Enabled(默认值) SQL_IS_ON 实现透明网络IP解析。
Disabled SQL_IS_OFF 禁用透明网络 IP 解析。

UseFMTONLY

控制连接到 SQL Server 2012 及更高版本时,元数据是否使用 SET FMTONLY

关键词价值 说明
No(默认值) 如果有元数据,请使用 sp_describe_first_result_set
Yes SET FMTONLY 用于元数据。

复制

指定在 ODBC 驱动程序 17.8 及更高版本中使用复制登录名。

关键词价值 说明
No(默认值) 不使用复制登录。
Yes 带有 NOT FOR REPLICATION 选项的触发器不会在连接时触发。

RetryExec

从版本 18.1 开始,可以使用可配置的重试逻辑。 它根据可配置条件自动重新执行特定的 ODBC 函数调用。 通过连接字符串,使用 RetryExec 关键字以及一组重试规则来启用此功能。 每个重试规则包含三个冒号分隔的组件:错误匹配、重试策略和查询匹配。

查询匹配结果决定了对于给定执行应使用的重试规则。 它匹配输入命令文本(SQLExecDirect)或语句对象中预备的命令文本(SQLExecute)。 如果有多条规则匹配,则使用列表中的第一个匹配规则。 这种行为允许你按更普遍的顺序列出规则。 如果规则不匹配,则不重试。

当执行导致错误且存在适用的重试规则时,其错误匹配决定是否应重试执行。

关键词的值 RetryExec 是分号分隔的重试规则列表。
RetryExec={rule1;rule2}

重试规则如下所示:<errormatch>:<retrypolicy>:<querymatch>

  • 错误匹配:逗号分隔的错误代码列表。 例如,指定 1000,2000 会列出你想重试的错误代码。

  • 重试政策:规定延迟至下一次重试。 第一个参数是重试次数,第二个参数是延迟。 例如,3,10+7 表示从 10 开始重试三次,之后每次重试都增加 7 秒。 如果你不指定 +7,每次重试都会呈指数级翻倍。

  • 查询匹配:指定你想要匹配的查询。 如果你没有具体说明,规则适用于所有查询。 指定 SELECT 意味着所有以 SELECT. 开头的查询。

将这三个组件组合在一起以用于连接字符串:

RetryExec={1000,2000:3,10+7:SELECT}

该规则意味着:对于以 SELECT 开头的查询,如果出现错误 10002000,则重试两次,初始延迟为 10 秒,后续每次重试增加 7 秒。

示例

40501,40540:4,5

对于错误 4050140540,最多重试四次,初始延迟时间为 5 秒,并且每次重试之间的延迟时间按指数翻倍。 此规则适用于所有查询。

49919:2,10+:CREATE

对于以 49919 开头的查询出现的错误 CREATE,最多重试两次,首次在 10 秒后重试,然后在 20 秒后再次重试。

49918,40501,10928:5,10+5:SELECT c1

对于以 40501 开头的查询中出现的错误 4991810928SELECT c1,最多重试五次,首次重试等待 10 秒,此后每次将等待时间增加 5 秒。

将上述三条规则一起指定为 连接字符串 如下:

RetryExec={49918,40501,10928:5,10+5:SELECT c1;49919:2,10+:CREATE;40501,40540:4,5}

将最一般的(全部匹配)规则放在末尾,以便前两条更具体的规则能够匹配各自的查询。

客户端证书

指定了带有环回连接的认证证书。 该选项仅在 Linux 上的 SQL Server 中提供。 选项包括:

选项值 说明
sha1:<hash_value> ODBC 驱动程序使用 SHA1 哈希值在 Windows 证书存储库中定位证书。
subject:<subject> ODBC 驱动程序利用主体在 Windows 证书存储库中查找证书。
file:<file_location>[,password:<password>] ODBC 驱动程序使用证书文件。

如果证书为 PFX 格式,且 PFX 证书中的私钥受密码保护,请包含 password 关键字。 对于采用 PEMDER 格式的证书,请包含 ClientKey 属性。

ClientKey

指定由 DER 属性指定的 ClientCertificatePEM 证书的私钥文件位置。 格式:

选项值 说明
file:<file_location>[,password:<password>] 指定私钥文件的位置。

如果私钥文件有密码保护,请包含 password 关键词。 如果密码包含任何 , 字符,紧接每个字符后添加一个额外的 , 字符。 例如,如果密码是 a,b,c,连接字符串 中的逃逸密码为 a,,b,,c

HostnameInCertificate

指定在协商 encryption 时服务器证书中应期望的主机名(如果它不同于根据 AddrAddressServer 派生出的默认值)。 使用 ServerCertificate 选项时,将忽略 HostnameInCertificate 选项。

IP 地址首选项

从18.1版本开始,使用该选项指定连接优先级IP地址类型。

可能的选项有 IPv4FirstIPv6FirstUsePlatformDefaultUsePlatformDefault 按系统调用解析服务器名称时提供的地址顺序进行连接。 默认值为 IPv4First,对应之前版本中的行为。

服务器证书

从18.1版本开始,使用严格加密模式的该选项。 使用ServerCertificate关键字指定证书文件的路径,以匹配SQL Server的TLS/SSL证书。 匹配方式取代了标准的证书验证(如有效期、主机名、信任链等)。 接受的证书格式为 PEMDERCER。 如果指定此选项,则会通过检查所提供的 ServerCertificate 是否与 SQL Server 证书完全匹配来验证该证书。

SQL_COPT_SS_ACCESS_TOKEN

使用Microsoft Entra访问令牌进行身份验证。 有关详细信息,请参阅在 ODBC 驱动程序中使用 Microsoft Entra ID

属性值 说明
NULL(默认值) 不提供访问令牌。
ACCESSTOKEN* 指向访问令牌的指针。

SQL_COPT_SS_CEKEYSTOREDATA

与加载的密钥存储提供程序库进行通信。 控制透明列加密功能(Always Encrypted)。 此属性没有默认值。 有关详细信息,请参阅自定义密钥存储提供程序

属性值 说明
CEKEYSTOREDATA * 密钥存储提供程序库的通信数据结构

SQL_COPT_SS_CEKEYSTOREPROVIDER

为 Always Encrypted 加载密钥存储提供程序库,或检索已加载的密钥存储提供程序库的名称。 有关详细信息,请参阅自定义密钥存储提供程序。 此属性没有默认值。

属性值 说明
char * 密钥存储提供程序库的路径

SQL_COPT_SS_ENLIST_IN_XA

要使用与 XA 兼容的事务处理器(TP)启用 XA 事务,应用程序需要调用 SQLSetConnectAttr,并传入 SQL_COPT_SS_ENLIST_IN_XA 以及一个指向 XACALLPARAM 对象的指针。 Windows (17.3+)、Linux 和 macOS 支持此选项。

SQLSetConnectAttr(hdbc, SQL_COPT_SS_ENLIST_IN_XA, param, SQL_IS_POINTER);  // XACALLPARAM *param

要仅将 XA 事务与 ODBC 连接关联,在调用 SQLSetConnectAttr 时,提供 TRUEFALSE 以及 SQL_COPT_SS_ENLIST_IN_XA,而不要提供该指针。 此设置仅在 Windows 上有效,不能用于通过客户端应用程序指定 XA 操作。

SQLSetConnectAttr(hdbc, SQL_COPT_SS_ENLIST_IN_XA, (SQLPOINTER)TRUE, 0);
数值 说明 平台
XACALLPARAM 对象* 指向 XACALLPARAM 对象的指针。 Windows、Linux 和 macOS
TRUE 将 XA 事务与 ODBC 连接关联。 所有相关的数据库操作都在 XA 事务的保护下执行。 Windows
FALSE 将事务与 ODBC 连接解除关联。 Windows

若要详细了解 XA 事务,请参阅使用 XA 事务

SQL_COPT_SS_LONGASMAX

将长数据类型作为 max 数据类型发送到服务器。

属性值 说明
No(默认值) 发送时不要把长类型转换成最大类型。
Yes 发送时将数据从长类型转换为最大类型。

SQL_COPT_SS_SPID

检索连接的会话 ID。 此属性相当于 T-SQL T-SQL @@SPID 变量,只是它不会导致额外往返到服务器。

属性值 说明
DWORD SPID