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

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

连接字符串关键字

客户端应用程序使用以下连接字符串关键字可指定 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: