客户端连接中的服务主体名称 (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: