Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank 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 |
|---|---|---|
| Zugriffstoken | 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; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=SqlPassword; Benutzer-ID=[Benutzername]; Password=[password]; Verschlüsselung für Data=Obligatorisch verwenden
- Veraltet:
Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Benutzer-ID=[Benutzername]; Password=[password]; Verschlüsselung für Data=Obligatorisch verwenden
- 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; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryIntegrated; Verschlüsselung für Data=Obligatorisch verwenden
- Veraltet:
Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Integrierte Sicherheit=SSPI; Verschlüsselung für Data=Obligatorisch verwenden
- 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
Hinweis
Die ActiveDirectoryPassword-Authentifizierungsoption (Microsoft Entra ID-Kennwortauthentifizierung) ist veraltet.
Das Kennwort von Microsoft Entra ID basiert auf dem OAuth 2.0 Resource Owner Password Credentials (ROPC) Grant, das es einer Anwendung ermöglicht, den Benutzer anzumelden, indem es das Passwort direkt verarbeitet.
Microsoft empfiehlt, den ROPC-Fluss nicht zu verwenden; sie ist nicht mit mehrstufiger Authentifizierung (MFA) kompatibel. In den meisten Szenarien sind sicherere Alternativen verfügbar und empfohlen. Dieser Fluss erfordert ein hohes Vertrauen in die Anwendung und trägt Risiken, die in anderen Flüssen nicht vorhanden sind. Sie sollten diesen Fluss nur verwenden, wenn sicherere Flüsse nicht lebensfähig sind. Microsoft entfernt sich von diesem Authentifizierungsfluss mit hohem Risiko, um Benutzer vor böswilligen Angriffen zu schützen. Weitere Informationen finden Sie unter Planung für die obligatorische mehrstufige Authentifizierung für Azure.
Wenn der Benutzerkontext verfügbar ist, verwenden Sie die ActiveDirectoryInteractive-Authentifizierung.
Wenn der Benutzerkontext nicht verfügbar ist und Ihre App in der Azure-Infrastruktur ausgeführt wird, verwenden Sie ActiveDirectoryMSI (oder ActiveDirectoryManagedIdentity in einigen Treibern). Verwaltete Identität beseitigt den Aufwand für das Verwalten und regelmäßige Aktualisieren von Geheimnissen und Zertifikaten. Wenn Sie verwaltete Identität nicht verwenden können, verwenden Sie die ActiveDirectoryServicePrincipal-Authentifizierung.
Warnung
Verwenden Sie keine Service Principal-Authentifizierung, wenn ein Benutzerkontext verfügbar ist. App-exklusiver Zugriff ist inhärent hochprivilegiert, gewährt häufig mandantenweiten Zugriff und ermöglicht möglicherweise einem böswilligen Akteur, auf Kundendaten sämtlicher Benutzer zuzugreifen.
- Syntax:
IDataInitialize::GetDataSourceProvider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryPassword; Benutzer-ID=[Benutzername]; Password=[password]; Verschlüsselung für Data=Obligatorisch verwenden
- Syntax:
DBPROP_INIT_PROVIDERSTRINGServer=[server];Database=[database];Authentication=ActiveDirectoryPassword;UID=[username];PWD=[password];Encrypt=Mandatory
Integrierte Microsoft Entra-Authentifizierung
- Syntax:
IDataInitialize::GetDataSourceProvider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryIntegrated; Verschlüsselung für Data=Obligatorisch verwenden
- Syntax:
DBPROP_INIT_PROVIDERSTRINGServer=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
Microsoft Entra-Authentifizierung mit Zugriffstoken
- Syntax:
IDataInitialize::GetDataSourceProvider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Access Token=[access token] ;Use Encryption for Data=Mandatory
- Syntax:
DBPROP_INIT_PROVIDERSTRINGDie Bereitstellung von Zugriffstoken über
DBPROP_INIT_PROVIDERSTRINGwird nicht unterstützt.
Interaktive Microsoft Entra-Authentifizierung
- Syntax:
IDataInitialize::GetDataSourceProvider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryInteractive; Benutzer-ID=[Benutzername]; Verschlüsselung für Data=Obligatorisch verwenden
- Syntax:
DBPROP_INIT_PROVIDERSTRINGServer=[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; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryMSI; Benutzer-ID=[Objekt-ID]; Verschlüsselung für Data=Obligatorisch verwenden
- Systemseitig zugewiesene verwaltete Identität:
Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryMSI; Verschlüsselung für Data=Obligatorisch verwenden
- Benutzerseitig zugewiesene verwaltete Identität:
- Syntax:
DBPROP_INIT_PROVIDERSTRING- Benutzerseitig zugewiesene verwaltete Identität:
Server=[Server]; Database=[database]; Authentication=ActiveDirectoryMSI; UID=[Objekt-ID]; Encrypt=Obligatorisch
- 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::GetDataSourceProvider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryServicePrincipal; Benutzer-ID=[Anwendungs-ID (Client)]; Password=[Application (Client) secret]; Verschlüsselung für Data=Obligatorisch verwenden
- Syntax:
DBPROP_INIT_PROVIDERSTRINGServer=[Server]; Database=[Datenbank]; Authentication=ActiveDirectoryServicePrincipal; UID=[Anwendungs-ID (Client)]; PWD=[Anwendungsgeheimnis (Client)]; Encrypt=Erforderlich
Codebeispiele
Die folgenden Beispiele zeigen den erforderlichen Code, um über Verbindungsschlüsselwörter eine Verbindung mit Microsoft Entra ID herzustellen.
Zugriffstoken
#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 Integriert
#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.