Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Propósito
A partir da versão 18.2.1, o Microsoft OLE DB Driver for SQL Server permite que aplicações OLE DB se liguem ao Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics e Microsoft Fabric usando uma identidade federada .
Os métodos de autenticação Microsoft Entra incluem:
- Nome de utilizador e palavra-passe
- Token de acesso
- Autenticação integrada
A versão 18.3.0 adiciona suporte para os seguintes métodos de autenticação Microsoft Entra:
Autenticação interativa
Autenticação de identidade gerida (apenas a partir de uma Máquina Virtual Azure configurada com Identidade Gerida)
A versão 18.5.0 adiciona suporte para o seguinte método de autenticação:
- Autenticação do principal de serviço Microsoft Entra
Observação
Utilizar os seguintes modos de autenticação com DataTypeCompatibility (ou a sua propriedade correspondente) definido como 80não é suportado:
- Autenticação Microsoft Entra usando nome de utilizador e palavra-passe
- Autenticação do Microsoft Entra com token de acesso
- Autenticação integrada do Microsoft Entra
- Autenticação interativa Microsoft Entra
- Autenticação de identidades geridas por Microsoft Entra
- Autenticação do serviço principal Microsoft Entra
Para utilizar a autenticação Microsoft Entra, deve configurar a sua fonte de dados Azure SQL. Para obter mais informações, consulte Configurar e gerir a autenticação do Microsoft Entra com o Azure SQL.
Palavras-chave e propriedades da cadeia de ligação
As seguintes palavras-chave de cadeia de ligação foram introduzidas para suportar a autenticação Microsoft Entra:
| Palavra-chave de cadeia de ligação | Propriedade de Conexão | Description |
|---|---|---|
| Token de Acesso | SSPROP_AUTH_ACCESS_TOKEN |
Especifica um token de acesso para autenticação ao Microsoft Entra ID. |
| Authentication | SSPROP_AUTH_MODE |
Especifica o método de autenticação a utilizar. |
Para mais informações sobre as novas palavras-chave/propriedades, consulte as seguintes páginas:
- Usando palavras-chave de cadeia de conexão com o driver OLE DB para SQL Server
- Propriedades de inicialização e autorização
Criptografia e validação de certificado
Consulte Encriptação e validação de certificados para mais informações.
Adições à interface gráfica
A interface gráfica do driver foi melhorada para permitir a autenticação Microsoft Entra. Para obter mais informações, consulte:
Exemplo de cadeias de conexão
Esta secção mostra exemplos de palavras-chave de cadeias de conexão existentes e novas a serem usadas com as propriedades IDataInitialize::GetDataSource e DBPROP_INIT_PROVIDERSTRING.
Autenticação SQL
- Usando
IDataInitialize::GetDataSource:- Novo:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=SQLPassword; ID de utilizador=[nome de utilizador]; Palavra-passe=[palavra-passe]; Usar Encriptação para Dados=Obrigatório
- Descontinuado:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; ID de utilizador=[nome de utilizador]; Palavra-passe=[palavra-passe]; Usar Encriptação para Dados=Obrigatório
- Novo:
- Usando
DBPROP_INIT_PROVIDERSTRING:- Novo:
Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=SQLPassword; UID=[nome de utilizador]; PWD=[palavra-passe]; Encriptação=Obrigatório
- Descontinuado:
Servidor=[servidor]; Base de dados=[base de dados]; UID=[nome de utilizador]; PWD=[palavra-passe]; Encriptação=Obrigatório
- Novo:
Autenticação integrada do Windows usando a Interface do Provedor de Suporte de Segurança (SSPI)
- Usando
IDataInitialize::GetDataSource:- Novo:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryIntegrated; Usar Encriptação para Dados=Obrigatório
- Descontinuado:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Segurança Integrada=SSPI; Usar Encriptação para Dados=Obrigatório
- Novo:
- Usando
DBPROP_INIT_PROVIDERSTRING:- Novo:
Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryIntegrated; Encriptação=Obrigatório
- Descontinuado:
Servidor=[servidor]; Base de dados=[base de dados]; Trusted_Connection=sim; Encriptação=Obrigatório
- Novo:
Autenticação por nome de utilizador e palavra-passe Microsoft Entra
- Usando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryPassword; ID de utilizador=[nome de utilizador]; Palavra-passe=[palavra-passe]; Usar Encriptação para Dados=Obrigatória
- Usando
DBPROP_INIT_PROVIDERSTRING:Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryPassword; UID=[nome de utilizador]; PWD=[palavra-passe]; Encrypt=Mandatory
Autenticação integrada do Microsoft Entra
- Usando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryIntegrated; Usar Encriptação para Dados=Obrigatório
- Usando
DBPROP_INIT_PROVIDERSTRING:Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryIntegrated; Encriptação=Obrigatório
Autenticação Microsoft Entra usando um token de acesso
- Usando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Access Token=[access token]; Usar Encriptação para Dados=Obrigatório
- Usando
DBPROP_INIT_PROVIDERSTRING:Fornecer token de acesso através de
DBPROP_INIT_PROVIDERSTRINGnão é suportado
Autenticação interativa Microsoft Entra
- Usando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryInteractive; ID de utilizador=[nome de utilizador]; Usar Encriptação para Dados=Obrigatório
- Usando
DBPROP_INIT_PROVIDERSTRING:Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryInteractive; UID=[nome de utilizador]; Encriptação=Obrigatório
Autenticação de identidade gerida pelo Microsoft Entra
- Usando
IDataInitialize::GetDataSource:- Identidade gerida atribuída pelo utilizador:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryMSI; ID do utilizador=[ID do objeto]; Usar Encriptação para Dados=Obrigatório
- Identidade gerida atribuída ao sistema:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryMSI; Usar Encriptação para Dados=Obrigatório
- Identidade gerida atribuída pelo utilizador:
- Usando
DBPROP_INIT_PROVIDERSTRING:- Identidade gerida atribuída pelo utilizador:
Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryMSI; UID=[ID do objeto]; Encriptação=Obrigatório
- Identidade gerida atribuída pelo sistema
Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryMSI; Encriptação=Obrigatório
- Identidade gerida atribuída pelo utilizador:
Autenticação do Microsoft Entra service principal
- Usando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryServicePrincipal; ID do utilizador=[ID da aplicação (cliente)]; Password=[Application (cliente) secreto]; Usar Encriptação para Dados=Obrigatório
- Usando
DBPROP_INIT_PROVIDERSTRING:Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryServicePrincipal; UID=[ID da aplicação (cliente]; PWD=[Secreto da aplicação (cliente)]; Encriptação=Obrigatório
Exemplos de código
Os exemplos seguintes mostram o código necessário para se ligar ao Microsoft Entra ID com palavras-chave de ligação.
Token de Acesso
#include <string>
#include <iostream>
#include <msdasc.h>
int main()
{
wchar_t azureServer[] = L"server";
wchar_t azureDatabase[] = L"mydatabase";
wchar_t accessToken[] = L"eyJ0eXAiOi...";
IDBInitialize *pIDBInitialize = nullptr;
IDataInitialize* pIDataInitialize = nullptr;
HRESULT hr = S_OK;
CoInitialize(nullptr);
// Construct the connection string.
std::wstring connString = L"Provider=MSOLEDBSQL19;Data Source=" + std::wstring(azureServer) + L";Initial Catalog=" +
std::wstring(azureDatabase) + L";Access Token=" + accessToken + L";Use Encryption for Data=Mandatory;";
hr = CoCreateInstance(CLSID_MSDAINITIALIZE, nullptr, CLSCTX_INPROC_SERVER,
IID_IDataInitialize, reinterpret_cast<LPVOID*>(&pIDataInitialize));
if (FAILED(hr))
{
std::cout << "Failed to create an IDataInitialize instance." << std::endl;
goto Cleanup;
}
hr = pIDataInitialize->GetDataSource(nullptr, CLSCTX_INPROC_SERVER, connString.c_str(),
IID_IDBInitialize, reinterpret_cast<IUnknown**>(&pIDBInitialize));
if (FAILED(hr))
{
std::cout << "Failed to get data source object." << std::endl;
goto Cleanup;
}
hr = pIDBInitialize->Initialize();
if (FAILED(hr))
{
std::cout << "Failed to establish connection." << std::endl;
goto Cleanup;
}
Cleanup:
if (pIDBInitialize)
{
pIDBInitialize->Uninitialize();
pIDBInitialize->Release();
}
if (pIDataInitialize)
{
pIDataInitialize->Release();
}
CoUninitialize();
}
Active Directory Integrado
#include <string>
#include <iostream>
#include <msdasc.h>
int main()
{
wchar_t azureServer[] = L"server";
wchar_t azureDatabase[] = L"mydatabase";
IDBInitialize *pIDBInitialize = nullptr;
IDataInitialize* pIDataInitialize = nullptr;
HRESULT hr = S_OK;
CoInitialize(nullptr);
// Construct the connection string.
std::wstring connString = L"Provider=MSOLEDBSQL19;Data Source=" + std::wstring(azureServer) + L";Initial Catalog=" +
std::wstring(azureDatabase) + L";Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory;";
hr = CoCreateInstance(CLSID_MSDAINITIALIZE, nullptr, CLSCTX_INPROC_SERVER,
IID_IDataInitialize, reinterpret_cast<LPVOID*>(&pIDataInitialize));
if (FAILED(hr))
{
std::cout << "Failed to create an IDataInitialize instance." << std::endl;
goto Cleanup;
}
hr = pIDataInitialize->GetDataSource(nullptr, CLSCTX_INPROC_SERVER, connString.c_str(),
IID_IDBInitialize, reinterpret_cast<IUnknown**>(&pIDBInitialize));
if (FAILED(hr))
{
std::cout << "Failed to get data source object." << std::endl;
goto Cleanup;
}
hr = pIDBInitialize->Initialize();
if (FAILED(hr))
{
std::cout << "Failed to establish connection." << std::endl;
goto Cleanup;
}
Cleanup:
if (pIDBInitialize)
{
pIDBInitialize->Uninitialize();
pIDBInitialize->Release();
}
if (pIDataInitialize)
{
pIDataInitialize->Release();
}
CoUninitialize();
}
Conteúdo relacionado
Saiba mais sobre a autenticação Microsoft Entra para SQL Server.
Configure as ligações do driver usando as palavras-chave strings de conexão que o driver OLE DB suporta.