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

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

重要

SQL Server Native Client (SNAC) 未随附:

  • SQL Server 2022 (16.x) 及更高版本
  • SQL Server Management Studio 19 及更高版本

不建议在新应用开发中使用 SQL Server Native Client(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。

对于新项目,请使用以下驱动程序之一:

对于作为 SQL Server 数据库引擎组件(版本 2012 到 2019)随附的 SQLNCLI,请参阅此支持生命周期特例

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

  • SQLBrowseConnect

  • SQLConnect

  • SQLDriverConnect

  • SQLGetConnectAttr

  • SQLSetConnectAttr

另请参阅

SQL Server Native Client (ODBC)