用戶端連接 (ODBC) 中的服務主要名稱 (SPN)
適用於: 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: