用戶端連接中的服務主要名稱 (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。 只有當已經初始化資料來源時,才可讀取這個屬性。 如果您嘗試在已初始化資料來源之前讀取這個屬性,IDataInitialize::GetDataSource 將會適當地傳回 DB_S_ERRORSOCCURRED 或 DB_E_ERRORSOCCURRED,而且將會針對這個屬性在 DBPROPSET_PROPERTIESINERROR 中設定 DBPROPSTATUS_NOTSUPPORTED。 這個行為會根據 OLE DB 核心規格。 |
SSPROP_MUTUALLYAUTHENICATED | VT_BOOL,唯讀 | 如果連接中的伺服器已互相驗證過,則會傳回 VARIANT_TRUE,否則會傳回 VARIANT_FALSE。 只有當已經初始化資料來源時,才可讀取這個屬性。 如果嘗試在已初始化資料來源之前讀取這個屬性,IDataInitialize::GetDataSource 將會適當地傳回 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作為 和 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 狀態值 (如果有的話)。 未完成任何工作」。 |