共用方式為


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

本主題描述可在用戶端應用程式內支援服務主要名稱 (SPN) 的 OLE DB 屬性和成員函數。如需有關用戶端應用程式內之 SPN 的詳細資訊,請參閱<用戶端連接中的服務主要名稱 (SPN) 支援>。

提供者初始化字串關鍵字

下列提供者初始化字串關鍵字可支援 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,而且將會針對這個屬性在 DBPROPSET_PROPERTIESINERROR 中設定 DBPROPSTATUS_NOTSUPPORTED。這個行為會根據 OLE DB 核心規格。

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

OLE DB API 對 SPN 的支援

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

成員函數

描述

IDataInitialize::GetDataSource

pwszInitializationString 可包含新的關鍵字 ServerSPN 和 FailoverPartnerSPN。

IDataInitialize::GetInitializationString

如果 SSPROP_INIT_SERVERSPN 和 SSPROP_INIT_FAILOVERPARTNERSPN 有非預設值,將會透過 ppwszInitString 將它們當做 ServerSPN 和 FailoverPartnerSPN 的關鍵字值包含在初始化字串中。否則,這些關鍵字將不會包含在初始化字串中。

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 狀態值 (如果有的話)。未完成任何工作」。