共用方式為


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

本主題描述在用戶端應用程式中支援服務主體名稱 (SPN) 的 OLE DB 屬性和成員函式。 如需用戶端應用程式中 SPN 的詳細資訊,請參閱用戶端連線中的服務主體名稱 (SPN) 支援 (部分機器翻譯)。 如需範例,請參閱整合式 Kerberos 驗證 (OLE DB) (部分機器翻譯)。

提供者初始化字串關鍵字

下列提供者初始化字串關鍵字可支援 OLE DB 應用程式內的 SPN。 在下表中,關鍵字欄中的值會用於 IDBInitialize::Initialize 的提供者字串。 當使用 ADO 或 IDataInitialize::GetDataSource 連接時,描述欄中的值會在初始化字串中使用。

關鍵詞 說明 價值觀
ServerSPN 伺服器 SPN 伺服器的 SPN。 默認值是空字串,導致 SQL Server Native Client 使用預設的提供者產生的 SPN。
FailoverPartnerSPN 容錯移轉夥伴 SPN 容錯移轉夥伴的 SPN。 默認值是空字串,導致 SQL Server Native Client 使用預設的提供者產生的 SPN。

資料來源初始化屬性

屬性集中的 DBPROPSET_SQLSERVERDBINIT 下列屬性可讓應用程式指定SPN。

名稱 類型 用法
SSPROP_INIT_SERVERSPN VT_BSTR,讀取/寫入 指定伺服器的 SPN。 默認值是空字串,導致 SQL Server Native Client 使用預設的提供者產生的 SPN。
SSPROP_INIT_FAILOVERPARTNERSPN VT_BSTR,讀取/寫入 指定容錯移轉夥伴的 SPN。 默認值是空字串,導致 SQL Server Native Client 使用預設的提供者產生的 SPN。

數據源屬性

屬性集中的 DBPROPSET_SQLSERVERDATASOURCEINFO 下列屬性可讓應用程式探索驗證方法。

名稱 類型 用法
SSPROP_INTEGRATEDAUTHENTICATIONMETHOD VT_BSTR,唯讀 傳回連接所使用的驗證方法。 傳回給應用程式的值是 Windows 傳回 SQL Server Native Client 的值。 以下是可能的值:

- “NTLM”,這是在使用 NTLM 驗證開啟連線時傳回的。
- “Kerberos”,這是在使用 Kerberos 驗證開啟連線時傳回的。

如果連接已經開啟,而且無法判定驗證方法,就會傳回 VT_EMPTY。

只有當已經初始化資料來源時,才可讀取這個屬性。 如果您嘗試在初始化數據源之前讀取屬性,IDBProperties::GetProperies 會視需要傳回DB_S_ERRORSOCCURRED或DB_E_ERRORSOCCURRED,而且此屬性的DBPROPSET_PROPERTIESINERROR中會設定DBPROPSTATUS_NOTSUPPORTED。 這個行為會根據 OLE DB 核心規格。
SSPROP_MUTUALLYAUTHENICATED VT_BOOL,唯讀 如果連接中的伺服器已互相驗證過,則會傳回 VARIANT_TRUE,否則會傳回 VARIANT_FALSE。

只有當已經初始化資料來源時,才可讀取這個屬性。 如果嘗試在初始化數據源之前讀取屬性,IDBProperties::GetProperies 會視需要傳回DB_S_ERRORSOCCURRED或DB_E_ERRORSOCCURRED,而且DBPROPSTATUS_NOTSUPPORTED將在此屬性的DBPROPSET_PROPERTIESINERROR中設定。 這個行為會根據 OLE DB 核心規格。

如果針對未使用 Windows 驗證的連接來查詢這個屬性,就會傳回 VARIANT_FALSE。

OLE DB API 對 SPN 的支援

下表描述在用戶端連接中支援 SPN 的 OLE DB 成員函數:

成員函數 說明
IDataInitialize::GetDataSource pwszInitializationString 可以包含新的關鍵詞 ServerSPNFailoverPartnerSPN
IDataInitialize::GetInitializationString 如果SSPROP_INIT_SERVERSPN和SSPROP_INIT_FAILOVERPARTNERSPN具有非預設值,則會透過ppwszInitString作為和FailoverPartnerSPN的關鍵詞值ServerSPN包含在初始化字串中。 否則,這些關鍵字將不會包含在初始化字串中。
IDBInitialize::Initialize 如果在資料來源初始化屬性內設定 DBPROP_INIT_PROMPT 來啟用提示,將會顯示 [OLE DB 登入] 對話方塊。 如此可允許同時針對主體伺服器和它的容錯移轉夥伴來輸入 SPN。

如果已設定,則DPPROP_INIT_PROVIDERSTRING中的提供者字串會辨識新的關鍵詞 ServerSPN ,並在 FailoverPartnerSPN 存在時使用其值來初始化SSPROP_INIT_SERVER_SPN和SSPROP_INIT_FAILOVER_PARTNER_SPN。

呼叫 IDBInitialize::Initialize 之前,可以呼叫 IDBProperties::SetProperties 來設定 SSPROP_INIT_SERVER_SPN 和 SSPROP_INIT_FAILOVER_PARTNER_SPN 屬性。 這是使用提供者字串的替代方式。

如果在一個以上的地方設定屬性,以程式設計方式設定的值會優先於提供者字串中設定的值。 在初始化字串中設定的值會優先於登入對話方塊內設定的值。

如果相同的關鍵字在提供者字串內出現一次以上,第一次出現的值會優先於其他的值。
IDBProperties::GetProperties 可以呼叫 IDBProperties::GetProperties 來取得新資料來源初始化屬性 SSPROP_INIT_SERVERSPN 和 SSPROP_INIT_FAILOVERPARTNERSPN 以及新資料來源屬性 SSPROP_AUTHENTICATIONMETHOD 和 SSPROP_MUTUALLYAUTHENTICATED 的值。
IDBProperties::GetPropertyInfo IdbProperties::GetPropertyInfo 將會包含新的資料來源初始化屬性 SSPROP_INIT_SERVERSPN 和 SSPROP_INIT_FAILOVERPARTNERSPN 或是新的資料來源屬性 SSPROP_AUTHENTICATION_METHOD 和 SSPROP_MUTUALLYAUTHENTICATED。
IDBProperties::SetProperties 可以呼叫 IDBProperties::SetProperties 來設定新資料來源初始化屬性 SSPROP_INITSERVERSPN 和 SSPROP_INIT_FAILOVERPARTNERSPN 的值。

這些屬性可以在任何時間設定,但是如果資料來源已經開啟,將會傳回下列錯誤:DB_E_ERRORSOCCURRED --「多重步驟的 OLE DB 作業已產生錯誤。 請檢查每個 OLE DB 狀態值 (如果有的話)。 未完成任何工作」。

另請參閱

SQL Server Native Client (OLE DB)