Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Para aceder ao fornecedor OLE DB do SQL Server Native Client, o consumidor deve primeiro criar uma instância de um objeto fonte de dados chamando o método CoCreateInstance. Um identificador de classe único (CLSID) identifica cada fornecedor de OLE DB. Para o SQL Server fornecedor Native Client OLE DB, o identificador de classe é CLSID_SQLNCLI10. Também pode usar o símbolo SQLNCLI_CLSID que irá resolver-se para o fornecedor OLE DB SQL Server Native Client que é usado no sqlncli.h que refere.
O objeto fonte de dados expõe a interface IDBProperties , que o consumidor utiliza para fornecer informações básicas de autenticação, como nome do servidor, nome da base de dados, ID de utilizador e palavra-passe. O método IDBProperties::SetProperties é chamado para definir estas propriedades.
Se existirem múltiplas instâncias de SQL Server a correr no computador, o nome do servidor é especificado como NomeServidor\NomeInstância.
O objeto fonte de dados também expõe a interface IDBInitialize . Depois de definidas as propriedades, a ligação à fonte de dados é estabelecida chamando o método IDBInitialize::Initialize . Por exemplo:
CoCreateInstance(CLSID_SQLNCLI10,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDBInitialize,
(void **) &pIDBInitialize)
Esta chamada ao CoCreateInstance cria um único objeto da classe associada a CLSID_SQLNCLI10 (CSLID associado aos dados e ao código que serão usados para criar o objeto). IID_IDBInitialize é uma referência ao identificador da interface (IDBInitialize) a ser usada para comunicar com o objeto.
Segue-se uma função de exemplo que inicializa e estabelece uma ligação à fonte de dados.
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();
}