Установка подключения к источнику данных собственного клиента SQL Server
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Чтобы получить доступ к поставщику OLE DB собственного клиента SQL Server, потребитель должен сначала создать экземпляр объекта источника данных, вызвав метод CoCreateInstance . Каждый поставщик OLE DB определяется уникальным идентификатором класса (CLSID). Для поставщика OLE DB собственного клиента SQL Server идентификатор класса CLSID_SQLNCLI10. Вы также можете использовать символ SQLNCLI_CLSID, который будет разрешаться поставщику OLE DB собственного клиента SQL Server, который используется в ссылке на sqlncli.h.
Объект источника данных предоставляет интерфейс 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();
}
См. также
Создание приложения поставщика OLE DB для SQL Server Native Client