用戶端連接 (ODBC) 中的服務主要名稱 (SPN)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

重要

SQL Server Native Client (通常縮寫為 SNAC) 已從 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中移除。 不建議使用 SQL Server Native Client (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 開發新的應用程式。 往後請改用新的 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新的 Microsoft ODBC 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)