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