クライアント接続 (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 に返す値です。返される値は次のとおりです。
接続が開いていて認証方法を特定できない場合は、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 の状態の値を確認してください。作業は終了しませんでした。" |