SQL Server Native Client 데이터 원본에 대한 연결 설정

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

SQL Server Native Client OLE DB 공급자에 액세스하려면 소비자는 먼저 CoCreateInstance 메서드를 호출하여 데이터 원본 개체의 인스턴스를 만들어야 합니다. 각 OLE DB 공급자는 고유한 CLSID(클래스 ID)를 사용하여 식별합니다. 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 연결된 클래스의 단일 개체를 만듭니다(개체를 만드는 데 사용할 데이터 및 코드와 연결된 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 Native Client OLE DB 공급자 애플리케이션 만들기