本主题介绍在客户端应用程序中支持服务主体名称(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: