데이터 원본에 대한 연결 설정

SQL Server Native Client OLE DB 공급자에 액세스하려면 소비자는 먼저 CoCreateInstance 메서드를 호출하여 데이터 원본 개체의 인스턴스를 만들어야 합니다. 각 OLE DB 공급자는 고유한 CLSID(클래스 ID)를 사용하여 식별합니다. SQL Server Native Client OLE DB 공급자의 경우 클래스 식별자는 CLSID_SQLNCLI10입니다. 또한 기호 SQLNCLI_CLSID를 사용하여 참조하는 sqlncli.h에서 사용되는 SQL Server Native Client OLE DB 공급자를 확인할 수도 있습니다.

소비자는 데이터 원본 개체가 공개하는 IDBProperties 인터페이스를 사용하여 서버 이름, 데이터베이스 이름, 사용자 ID 및 암호와 같은 기본적인 인증 정보를 제공할 수 있습니다. 이러한 속성을 설정하려면 IDBProperties::SetProperties 메서드를 호출합니다.

컴퓨터에서 여러 SQL Server 인스턴스가 실행되는 경우 서버 이름은 ServerName\InstanceName 형식으로 지정됩니다.

데이터 원본 개체는 또한 IDBInitialize 인터페이스를 공개합니다. 속성을 설정한 다음에는 IDBInitialize::Initialize 메서드를 호출하여 데이터 원본에 연결할 수 있습니다. 예를 들면 다음과 같습니다.

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

이렇게 CoCreateInstance를 호출하면 CLSID_SQLNCLI10(개체를 만드는 데 사용되는 데이터 및 코드와 연관된 CLSID)과 연관된 클래스의 단일 개체가 생성됩니다. 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 Native Client OLE DB 공급자 응용 프로그램 만들기