ODBC 客户端连接中的服务主体名称(SPN)

本主题介绍在客户端应用程序中支持服务主体名称(SPN)的 ODBC 属性和函数。 有关客户端应用程序中的 SPN 的详细信息,请参阅 客户端连接中的服务主体名称(SPN)支持获取相互 Kerberos 身份验证

连接字符串关键字

以下连接字符串关键字使客户端应用程序能够指定 SPN。

关键字 价值
ServerSPN 服务器的 SPN。 默认值为空字符串,导致 SQL Server Native Client 使用默认的驱动程序生成的 SPN。
FailoverPartnerSPN 故障转移伙伴的 SPN。 默认值为空字符串,导致 SQL Server Native Client 使用默认的驱动程序生成的 SPN。

连接属性

以下连接属性使客户端应用程序能够指定 SPN 并查询身份验证方法。

名称 类型 用法
SQL_COPT_SS_SERVER_SPN

SQL_COPT_SS_FAILOVER_PARTNER_SPN
SQLTCHAR,可读/写 指定服务器的 SPN。 默认值为空字符串,导致 SQL Server Native Client 使用默认的驱动程序生成的 SPN。

只有在以编程方式设置此属性或打开连接后,才能查询此属性。 如果尝试在未打开的连接上查询此属性,并且尚未以编程方式设置该属性,则返回SQL_ERROR,并使用 SQLState 08003 记录诊断记录,并显示消息“连接未打开”。

如果尝试在连接打开时设置此属性,则返回SQL_ERROR,并记录了 SQLState HY011 的诊断记录以及消息“此时作无效”。
SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD SQLTCHAR,只读 返回用于连接的身份验证方法。 返回到应用程序的值是 Windows 返回到 SQL Server Native Client 的值。 可能的值为:

- 使用 NTLM 身份验证打开连接时返回的“NTLM”。
- 使用 Kerberos 身份验证打开连接时返回的“Kerberos”。

此属性只能读取用于使用 Windows 身份验证的打开连接。 如果在连接打开前尝试读取连接,则返回SQL_ERROR,并且 SQLState 08003 记录错误,并显示消息“连接未打开”。

如果在未使用 Windows 身份验证的连接上查询此属性,则返回SQL_ERROR,并且 SQLState HY092 和消息“属性/选项标识符无效(SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD仅适用于受信任连接”)记录错误。

如果无法确定身份验证方法,则返回SQL_ERROR,并使用 SQLState HY000 和消息“常规错误”记录错误。
SQL_COPT_SS_MUTUALLY_AUTHENTICATED SQLSMALLINT,只读 如果连接中的服务器经过相互身份验证,则返回SQL_TRUE;否则,返回SQL_FALSE。

此属性只能读取打开的连接。 如果在连接打开前尝试读取连接,则返回SQL_ERROR,并且 SQLState 08003 记录错误,并显示消息“连接未打开”。

如果针对未使用 Windows 身份验证的连接查询此属性,则返回SQL_FALSE。

指定 SPN 的 ODBC 函数支持

以下 ODBC 函数支持客户端应用程序和 SPN:

另请参阅

SQL Server Native Client (ODBC)