次の方法で共有


データ ソースへの接続の確立

SQL Server Native Client OLE DB プロバイダーにアクセスするには、コンシューマーはまず 、CoCreateInstance メソッドを呼び出してデータ ソース オブジェクトのインスタンスを作成する必要があります。 一意のクラス識別子 (CLSID) は、各 OLE DB プロバイダーを識別します。 SQL Server Native Client OLE DB プロバイダーの場合、クラス識別子はCLSID_SQLNCLI10。 参照する sqlncli.h で使用される SQL Server Native Client OLE DB プロバイダーに解決されるシンボル SQLNCLI_CLSIDを使用することもできます。

データ ソース オブジェクトは、サーバー名、データベース名、ユーザー ID、パスワードなどの基本的な認証情報を提供するためにコンシューマーが使用する IDBProperties インターフェイスを公開します。 IDBProperties::SetProperties メソッドは、これらのプロパティを設定するために呼び出されます。

コンピューター上で実行されている SQL Server のインスタンスが複数ある場合、サーバー名は ServerName\InstanceName として指定されます。

データ ソース オブジェクトは 、IDBInitialize インターフェイスも公開します。 プロパティが設定されると、 IDBInitialize::Initialize メソッドを呼び出すことによって、データ ソースへの接続が確立されます。 例えば次が挙げられます。

CoCreateInstance(CLSID_SQLNCLI10,   
                 NULL,   
                 CLSCTX_INPROC_SERVER,  
                 IID_IDBInitialize,   
                 (void **) &pIDBInitialize)  

この CoCreateInstance の呼び出しにより、CLSID_SQLNCLI10に関連付けられたクラスの 1 つのオブジェクトが作成されます (オブジェクトの作成に使用されるデータとコードに関連付けられた CSLID)。 IID_IDBInitializeは、オブジェクトとの通信に使用されるインターフェイス (IDBInitialize) の識別子への参照です。

データ ソースへの接続を初期化して確立するサンプル関数を次に示します。

void InitializeAndEstablishConnection() {  
   // Initialize the COM library.  
   CoInitialize(NULL);  
  
   // Obtain access to the SQL Server Native Client OLE DB provider.  
   hr = CoCreateInstance(CLSID_SQLNCLI10,   
                         NULL,   
                         CLSCTX_INPROC_SERVER,  
                         IID_IDBInitialize,   
                         (void **) &pIDBInitialize);  
   // Initialize property values needed to establish connection.  
   for (i = 0 ; i < 4 ; i++)   
      VariantInit(&InitProperties[i].vValue);  
  
   // Server name.  
   // See DBPROP structure for more information on InitProperties  
   InitProperties[0].dwPropertyID  = DBPROP_INIT_DATASOURCE;  
   InitProperties[0].vValue.vt    = VT_BSTR;  
   InitProperties[0].vValue.bstrVal=   
                     SysAllocString(L"Server");  
   InitProperties[0].dwOptions    = DBPROPOPTIONS_REQUIRED;  
   InitProperties[0].colid       = DB_NULLID;  
  
   // Database.  
   InitProperties[1].dwPropertyID  = DBPROP_INIT_CATALOG;  
   InitProperties[1].vValue.vt    = VT_BSTR;  
   InitProperties[1].vValue.bstrVal= SysAllocString(L"database");  
   InitProperties[1].dwOptions    = DBPROPOPTIONS_REQUIRED;  
   InitProperties[1].colid       = DB_NULLID;  
  
   // Username (login).  
   InitProperties[2].dwPropertyID  = DBPROP_AUTH_INTEGRATED;  
   InitProperties[2].vValue.vt    = VT_BSTR;  
   InitProperties[2].vValue.bstrVal= SysAllocString(L"SSPI");  
   InitProperties[2].dwOptions    = DBPROPOPTIONS_REQUIRED;  
   InitProperties[2].colid       = DB_NULLID;  
   InitProperties[3].dwOptions    = DBPROPOPTIONS_REQUIRED;  
   InitProperties[3].colid       = DB_NULLID;  
  
   // Construct the DBPROPSET structure(rgInitPropSet). The   
   // DBPROPSET structure is used to pass an array of DBPROP   
   // structures (InitProperties) to the SetProperties method.  
   rgInitPropSet[0].guidPropertySet = DBPROPSET_DBINIT;  
   rgInitPropSet[0].cProperties   = 4;  
   rgInitPropSet[0].rgProperties   = InitProperties;  
  
   // Set initialization properties.  
   hr = pIDBInitialize->QueryInterface(IID_IDBProperties,   
                           (void **)&pIDBProperties);  
   hr = pIDBProperties->SetProperties(1, rgInitPropSet);   
   pIDBProperties->Release();  
  
   // Now establish the connection to the data source.  
   pIDBInitialize->Initialize();  
}  

こちらもご覧ください

SQL Server ネイティブ クライアント OLE DB プロバイダー アプリケーションの作成