データ ソース オブジェクト (OLE DB)
SQL Server Native Client では、SQL Server などのデータ ストアへのリンクを確立するために使用する OLE DB インターフェイスのセットのことをデータ ソースと呼びます。 SQL Server Native Client のコンシューマーが最初にする作業は、プロバイダーのデータ ソース オブジェクトのインスタンスを作成することです。
すべての OLE DB プロバイダーは、そのプロバイダー自体のクラス ID (CLSID) を宣言します。 SQL Server Native Client OLE DB プロバイダーの CLSID は、C/C++ GUID CLSID_SQLNCLI10 です (シンボル SQLNCLI_CLSID は、参照先の sqlncli.h ファイルの適切な progid に解決されます)。 コンシューマーは、CLSID を指定して OLE CoCreateInstance 関数を使用し、データ ソース オブジェクトのインスタンスを作成します。
SQL Server Native Client は、インプロセス サーバーです。 実行可能なコンテキストを示すために、CLSCTX_INPROC_SERVER マクロを使用して、SQL Server Native Client OLE DB プロバイダーのオブジェクトのインスタンスを作成します。
SQL Server Native Client OLE DB プロバイダーのデータ ソース オブジェクトでは、OLE DB 初期化インターフェイスが公開されます。コンシューマーは、このインターフェイスを使用して、既存の SQL Server データベースに接続できます。
SQL Server Native Client OLE DB プロバイダー経由で行うすべての接続では、次のオプションが自動的に設定されます。
SET ANSI_WARNINGS ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_NULL_DFLT_ON ON
SET QUOTED_IDENTIFIER ON
SET CONCAT_OF_NULL_YIELDS_NULL ON
次の例では、クラス ID マクロを使用して、SQL Server Native Client OLE DB プロバイダーのデータ ソース オブジェクトを作成し、そのデータ ソース オブジェクトの IDBInitialize インターフェイスを取得します。
IDBInitialize* pIDBInitialize;
HRESULT hr;
hr = CoCreateInstance(CLSID_SQLNCLI10, NULL, CLSCTX_INPROC_SERVER,
IID_IDBInitialize, (void**) &pIDBInitialize);
if (SUCCEEDED(hr))
{
// Perform necessary processing with the interface.
pIDBInitialize->Uninitialize();
pIDBInitialize->Release();
}
else
{
// Display error from CoCreateInstance.
}
SQL Server Native Client OLE DB プロバイダーのデータ ソース オブジェクトのインスタンスが正常に作成された場合、データ ソースを初期化し、セッションを作成することで、コンシューマー アプリケーションを続行できます。 OLE DB セッションは、データへのアクセスや操作を可能にするインターフェイスを提供します。
SQL Server Native Client OLE DB プロバイダーは、データ ソースを正常に初期化する作業の一環として、SQL Server の指定されたインスタンスへの最初の接続を行います。 いずれかのデータ ソース初期化インターフェイスで参照が保持されている間、または IDBInitialize::Uninitialize メソッドが呼び出されるまで、その最初の接続が維持されます。