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

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

重要

已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中删除SQL Server Native Client(通常缩写为 SNAC)。 不建议在新应用程序开发工作中使用 SQL Server Native Client(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。 请在此后切换为使用新版 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新版的 Microsoft OLE DB Driver for SQL Server。 对于作为 SQL Server 数据库引擎组件随附的 SQLNCLI (版本 2012 到 2019) ,请参阅此支持生命周期异常

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