クライアント接続 (OLE DB) でのサービス プリンシパル名 (SPN)

このトピックでは、クライアント アプリケーションでサービス プリンシパル名 (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 の状態の値を確認してください。作業は終了しませんでした。"