Een verbinding tot stand brengen met een SQL Server Native Client Data Source

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Om toegang te krijgen tot de SQL Server Native Client OLE DB-provider, moet de consument eerst een instantie van een databronobject aanmaken door de CoCreateInstance-methode aan te roepen. Een unieke klasse-identificatie (CLSID) identificeert elke OLE DB-provider. Voor de SQL Server Native Client OLE DB-provider is de klasse-identificatie CLSID_SQLNCLI10. Je kunt ook het symbool gebruiken SQLNCLI_CLSID dat wordt opgelost naar de SQL Server Native Client OLE DB-provider die wordt gebruikt in de sqlncli.h waar je naar verwijst.

Het databronobject stelt de IDBProperties-interface beschikbaar, die de consument gebruikt om basisauthenticatie-informatie te verstrekken zoals servernaam, databasenaam, gebruikers-ID en wachtwoord. De methode IDBProperties::SetProperties wordt aangeroepen om deze eigenschappen in te stellen.

Als er meerdere instanties van SQL Server op de computer draaien, wordt de servernaam gespecificeerd als ServerName\InstanceName.

Het databronobject maakt ook de IDBInitialize-interface beschikbaar. Nadat de eigenschappen zijn ingesteld, wordt de verbinding met de databron tot stand gebracht door de methode IDBInitialize::Initialize aan te roepen. Voorbeeld:

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

Deze aanroep van CoCreateInstance creëert één object van de klasse die aan CLSID_SQLNCLI10 is gekoppeld (CSLID gekoppeld aan de data en code die gebruikt zullen worden om het object te maken). IID_IDBInitialize is een verwijzing naar de identificatie van de interface (IDBInitialize) die gebruikt wordt om met het object te communiceren.

Het volgende is een voorbeeldfunctie die initialiseert en een verbinding met de databron tot stand brengt.

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