Membuat Koneksi ke Sumber Data Klien Asli SQL Server

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Untuk mengakses penyedia SQL Server Native Client OLE DB, konsumen harus terlebih dahulu membuat instans objek sumber data dengan memanggil metode CoCreateInstance . Pengidentifikasi kelas unik (CLSID) mengidentifikasi setiap penyedia OLE DB. Untuk penyedia SQL Server Native Client OLE DB, pengidentifikasi kelas CLSID_SQLNCLI10. Anda juga dapat menggunakan simbol SQLNCLI_CLSID yang akan diselesaikan ke penyedia SQL Server Native Client OLE DB yang digunakan dalam sqlncli.h yang Anda referensikan.

Objek sumber data mengekspos antarmuka IDBProperties , yang digunakan konsumen untuk memberikan informasi autentikasi dasar seperti nama server, nama database, ID pengguna, dan kata sandi. Metode IDBProperties::SetProperties dipanggil untuk mengatur properti ini.

Jika ada beberapa instans SQL Server yang berjalan di komputer, nama server ditentukan sebagai ServerName\InstanceName.

Objek sumber data juga mengekspos antarmuka IDBInitialize . Setelah properti diatur, koneksi ke sumber data dibuat dengan memanggil metode IDBInitialize::Initialize . Contohnya:

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

Panggilan ke CoCreateInstance ini membuat satu objek kelas yang terkait dengan CLSID_SQLNCLI10 (CSLID yang terkait dengan data dan kode yang akan digunakan untuk membuat objek). IID_IDBInitialize adalah referensi ke pengidentifikasi antarmuka (IDBInitialize) yang akan digunakan untuk berkomunikasi dengan objek.

Berikut ini adalah fungsi sampel yang menginisialisasi dan membuat koneksi ke sumber data.

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();  
}  

Lihat Juga

Membuat Aplikasi Penyedia OLE DB Klien Asli SQL Server