Verwenden Sie Microsoft Entra ID
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric
Zweck
Ab Version 18.2.1 ermöglicht der Microsoft OLE DB-Treiber für SQL Server, dass OLE DB-Anwendungen über einen Identitätsverbund eine Verbindung mit einer Azure SQL-Datenbank, Azure SQL Managed Instance, Azure Synapse Analytics und Microsoft Fabric herstellen.
Microsoft Entra Authentifizierungsmethoden beinhalten:
- Benutzername und Kennwort
- Zugriffstoken
- Integrierte Authentifizierung
Mit Version 18.3.0 kommt Unterstützung für die folgenden Microsoft Entra-Authentifizierungsmethoden hinzu:
Interaktive Authentifizierung
Authentifizierung mittels verwalteter Identitäten (nur von einer Azure Virtual Machine, die mit verwalteter Identität konfiguriert ist)
Mit Version 18.5.0 wird Unterstützung für die folgenden Authentifizierungsmethoden hinzugefügt:
- Microsoft Entra-Authentifizierung mit Dienstprinzipal
Hinweis
Die Verwendung der folgenden Authentifizierungsmodi, wenn DataTypeCompatibility
(oder eine entsprechende Eigenschaft) auf 80
festgelegt ist, wird nicht unterstützt:
- Microsoft Entra-Authentifizierung mit Benutzername und Kennwort
- Microsoft Entra-Authentifizierung mit Zugriffstoken
- Integrierte Microsoft Entra-Authentifizierung
- Interaktive Microsoft Entra-Authentifizierung
- Microsoft Entra-Authentifizierung mit verwalteten Identitäten
- Microsoft Entra-Authentifizierung mit Dienstprinzipal
Um die Microsoft Entra-Authentifizierung verwenden zu können, müssen Sie Ihre Azure SQL-Datenquelle konfigurieren. Weitere Informationen finden Sie unter Konfigurieren und Verwalten der Microsoft Entra-Authentifizierung mit Azure SQL.
Schlüsselwörter und Eigenschaften bei Verbindungszeichenfolgen
Zur Unterstützung der Microsoft Entra-Authentifizierung wurden die folgenden Schlüsselwörter für Verbindungszeichenfolgen eingeführt:
Verbindungszeichenfolgen-Schlüsselwort | Verbindungseigenschaft | BESCHREIBUNG |
---|---|---|
Access Token | SSPROP_AUTH_ACCESS_TOKEN |
Gibt ein Zugriffstoken für die Authentifizierung bei Microsoft Entra ID an. |
Authentifizierung | SSPROP_AUTH_MODE |
Gibt die zu verwendende Authentifizierungsmethode an. |
Weitere Informationen zu den neuen Schlüsselwörtern/Eigenschaften finden Sie auf den folgenden Seiten:
- Verwenden von Verbindungszeichenfolgen-Schlüsselwörtern mit dem OLE DB-Treiber für SQL Server
- Initialisierungs- und Autorisierungseigenschaften
Verschlüsselung und Zertifikatüberprüfung
Weitere Informationen finden Sie unter Verschlüsselung und Zertifikatüberprüfung.
GUI-Ergänzungen
Die grafische Benutzeroberfläche des Treibers wurde erweitert, um die Microsoft Entra-Authentifizierung zu ermöglichen. Weitere Informationen finden Sie unter:
Exemplarische Verbindungszeichenfolgen
Dieser Abschnitt enthält Beispiele für neue und vorhandene Schlüsselwörter in Verbindungszeichenfolgen, die mit den Eigenschaften IDataInitialize::GetDataSource
und DBPROP_INIT_PROVIDERSTRING
verwendet werden können.
SQL-Authentifizierung
- Syntax:
IDataInitialize::GetDataSource
- Neu:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=SqlPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Veraltet:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Neu:
- Syntax:
DBPROP_INIT_PROVIDERSTRING
- Neu:
Server=[server];Database=[database];Authentication=SqlPassword;UID=[username];PWD=[password];Encrypt=Mandatory
- Veraltet:
Server=[server];Database=[database];UID=[username];PWD=[password];Encrypt=Mandatory
- Neu:
Integrierte Windows-Authentifizierung unter Verwendung der Security Support Provider-Schnittstelle (SSPI)
- Syntax:
IDataInitialize::GetDataSource
- Neu:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- Veraltet:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Integrated Security=SSPI;Use Encryption for Data=Mandatory
- Neu:
- Syntax:
DBPROP_INIT_PROVIDERSTRING
- Neu:
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
- Veraltet:
Server=[server];Database=[database];Trusted_Connection=yes;Encrypt=Mandatory
- Neu:
Microsoft Entra-Authentifizierung mit Benutzername und Kennwort
- Syntax:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Syntax:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryPassword;UID=[username];PWD=[password];Encrypt=Mandatory
Integrierte Microsoft Entra-Authentifizierung
- Syntax:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- Syntax:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
Microsoft Entra-Authentifizierung mit Zugriffstoken
- Syntax:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Access Token=[access token] ;Use Encryption for Data=Mandatory
- Syntax:
DBPROP_INIT_PROVIDERSTRING
Die Bereitstellung von Zugriffstoken über
DBPROP_INIT_PROVIDERSTRING
wird nicht unterstützt.
Interaktive Microsoft Entra-Authentifizierung
- Syntax:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryInteractive;User ID=[username];Use Encryption for Data=Mandatory
- Syntax:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryInteractive;UID=[username];Encrypt=Mandatory
Microsoft Entra-Authentifizierung mit verwalteter Identität
- Syntax:
IDataInitialize::GetDataSource
- Benutzerseitig zugewiesene verwaltete Identität:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;User ID=[Object ID];Use Encryption for Data=Mandatory
- Systemseitig zugewiesene verwaltete Identität:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;Use Encryption for Data=Mandatory
- Benutzerseitig zugewiesene verwaltete Identität:
- Syntax:
DBPROP_INIT_PROVIDERSTRING
- Benutzerseitig zugewiesene verwaltete Identität:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;UID=[Object ID];Encrypt=Mandatory
- Systemseitig zugewiesene verwaltete Identität:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;Encrypt=Mandatory
- Benutzerseitig zugewiesene verwaltete Identität:
Microsoft Entra-Authentifizierung mit Dienstprinzipal
- Syntax:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryServicePrincipal;User ID=[Application (client) ID];Password=[Application (client) secret];Use Encryption for Data=Mandatory
- Syntax:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryServicePrincipal;UID=[Application (client) ID];PWD=[Application (client) secret];Encrypt=Mandatory
Codebeispiele
Die folgenden Beispiele zeigen den erforderlichen Code, um über Verbindungsschlüsselwörter eine Verbindung mit Microsoft Entra ID herzustellen.
Access Token
#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 Integrated
#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();
}
Zugehöriger Inhalt
Zugang zu Microsoft Entra-Webanwendungen mit dem OAuth 2.0 Code Grant Flow autorisieren.
Weitere Informationen zur Microsoft Entra-Authentifizierung für SQL Server.
Konfigurieren Sie Treiberverbindungen mithilfe von Verbindungszeichenfolgen-Schlüsselwörtern, die der OLE DB-Treiber unterstützt.