データ ソース オブジェクト (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 メソッドが呼び出されるまで、その最初の接続が維持されます。