다음을 통해 공유


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

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform 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 공급자 애플리케이션 만들기