Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:sql Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Aby uzyskać dostęp do dostawcy natywnej klientowej bazy danych SQL Server, konsument musi najpierw utworzyć instancję obiektu źródła danych, wywołując metodę CoCreateInstance. Unikalny identyfikator klasy (CLSID) identyfikuje każdego dostawcę OLE DB. Dla dostawcy SQL Server Native Client OLE DB identyfikator klasy to CLSID_SQLNCLI10. Możesz także użyć SQLNCLI_CLSID symboli, który rozwiąże się do SQL Server natywnego dostawcy OLE DB Native Client, używanego w sqlncli.h, do którego się odwołujesz.
Obiekt źródła danych udostępnia interfejs IDBProperties , którego użytkownik wykorzystuje do podania podstawowych informacji uwierzytelniających, takich jak nazwa serwera, nazwa bazy danych, identyfikator użytkownika i hasło. Metoda IDBProperties::SetProperties jest wywoływana do ustawienia tych właściwości.
Jeśli na komputerze działa wiele instancji SQL Server, nazwa serwera jest określana jako ServerName\InstanceName.
Obiekt źródła danych udostępnia również interfejs IDBInitialize . Po ustawieniu właściwości połączenie ze źródłem danych jest nawiązywane przez wywołanie metody IDBInitialize::Initialize . Przykład:
CoCreateInstance(CLSID_SQLNCLI10,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDBInitialize,
(void **) &pIDBInitialize)
To wywołanie do CoCreateInstance tworzy pojedynczy obiekt klasy powiązanej z CLSID_SQLNCLI10 (CSLID powiązany z danymi i kodem użytym do utworzenia obiektu). IID_IDBInitialize jest odniesieniem do identyfikatora interfejsu (IDBIitialize), który ma być używany do komunikacji z obiektem.
Poniżej znajduje się przykładowa funkcja, która inicjalizuje i nawiązuje połączenie ze źródłem danych.
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();
}