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

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