SQL Server-Connector – Verwaltung und Problembehandlung
Gilt für: SQL Server
Weitere Informationen über den SQL Server Connector finden Sie in diesem Artikel. Weitere Informationen zum SQL Server-Connector finden Sie unter Erweiterbare Schlüsselverwaltung mit Azure Key Vault (SQL Server), Installationsschritte für die Erweiterbare Schlüsselverwaltung mit Azure Key Vault und Verwenden von SQL Server-Connector mit SQL-Verschlüsselungsfunktionen.
Hinweis
Während Microsoft Entra-ID der neue Name für Azure Active Directory (Azure AD) ist, bleibt Azure AD in einigen fest kodierten Elementen wie Benutzeroberfläche-Feldern, Verbindungsanbietern, Fehlercodes und Cmdlets erhalten, um Störungen in bestehenden Umgebungen zu vermeiden. In diesem Artikel sind die beiden Namen austauschbar.
A. Wartungsanweisungen für SQL Server-Connector
Schlüsselrotation
Azure Key Vault unterstützt die Schlüsselrotation. Dabei handelt es sich um das Erstellen eines neuen Schlüssels und das Aktualisieren der Anwendungen für die Verwendung des neuen Schlüssels. Die Schlüsselrotation ist eine bewährte Sicherheitsmethode, um Daten zu schützen, falls der Schlüssel kompromittiert wird. Der SQL Server-Connector unterstützt die Schlüsselrotation. Alte Schlüssel sollten nicht gelöscht werden, da möglicherweise eine Datenbank mit einem alten Schlüssel wiederhergestellt werden muss. Führen Sie für die Rotation eines Schlüssels die Schritte in Rotation eines asymmetrischen Schlüssels mit einem neuen AKV-Schlüssel oder einer neuen AKV-Schlüsselversion vornehmen aus.
Upgrade des SQL Server-Connectors
Die Versionen 1.0.0.440 und älter wurden ersetzt und werden nicht länger in Produktionsumgebungen unterstützt. Die Versionen 1.0.1.0 und neuer werden in Produktionsumgebungen unterstützt. Richten Sie sich nach den folgenden Anweisungen, um ein Upgrade auf die neueste im Microsoft Download Center verfügbare Version auszuführen.
Aktualisieren
- Halten Sie den SQL Server-Dienst mithilfe des SQL Server-Konfigurations-Managers an.
- Deinstallieren Sie die alte Version über Systemsteuerung\Programme\Programme und Features.
- Anwendungsname: SQL Server-Connector für Microsoft Azure Key Vault
- Version: 15.0.300.96 (oder älter)
- DLL-Dateidatum: 30.1.2018 (oder älter)
- Installieren Sie eine neue Version des SQL Server-Connectors für Microsoft Azure Key Vault bzw. führen Sie ein entsprechendes Upgrade durch
- Version: 15.0.2000.440
- DLL-Dateidatum: 11.9.2020
- Starten Sie den SQL Server-Dienst.
- Testen Sie, ob der Zugriff auf verschlüsselte Datenbanken möglich ist
Rollback
Halten Sie den SQL Server-Dienst mithilfe des SQL Server-Konfigurations-Managers an.
Deinstallieren Sie die neue Version über Systemsteuerung\Programme\Programme und Features.
- Anwendungsname: SQL Server-Connector für Microsoft Azure Key Vault
- Version: 15.0.2000.440
- DLL-Dateidatum: 24.11.2020
Installieren Sie eine alte Version des SQL Server-Connectors für Microsoft Azure Key Vault.
- Version: 15.0.300.96
- DLL-Dateidatum: 30.1.2018
Starten Sie den SQL Server-Dienst.
Überprüfen Sie, ob auf die Datenbanken, die TDE verwenden, zugegriffen werden kann
Nachdem Sie bestätigt haben, dass das Update funktioniert, können Sie den alten SQL Server-Connectorordner löschen (wenn Sie sich in Schritt 3 dazu entschlossen haben, ihn umzubenennen statt zu deinstallieren)
Ältere Versionen des SQL Server-Connectors
Deeplinks zu älteren Versionen des SQL Server-Connectors
- Aktuell: 1.0.5.0 (Version 15.0.2000.440) – Dateidatum: 24. November 2020
- 1.0.5.0 (Version 15.0.300.96) – Dateidatum: 30. Januar 2018
- 1.0.4.0: (Version 13.0.811.168)
Ändern des SQL Server-Dienstprinzipals
SQL Server verwendet in Microsoft Entra ID (ehemals Azure Active Directory) erstellte Dienstprinzipale als Anmeldeinformationen zum Zugriff auf den Schlüsseltresor. Der Dienstprinzipal verfügt über eine Client-ID und einen Authentifizierungsschlüssel. Für SQL Server-Anmeldenamen werden der VaultName, die Client-ID und der Authentifizierungsschlüssel festgelegt. Der Authentifizierungsschlüssel ist für einen bestimmten Zeitraum (ein oder zwei Jahre) gültig. Vor Ablauf des Zeitraums muss ein neuer Schlüssel in Microsoft Entra ID für den Dienstprinzipal generiert werden. Anschließend müssen die Anmeldeinformationen in SQL Server geändert werden. Management Studio verwaltet einen Cache für die Anmeldeinformationen in der aktuellen Sitzung. Wenn also Anmeldeinformationen geändert werden, sollte Management Studio neu gestartet werden.
Schlüsselsicherung und -wiederherstellung
Der Schlüsseltresor sollte regelmäßig gesichert werden. Wenn ein asymmetrischer Schlüssel im Tresor verloren geht, kann er aus der Sicherung wiederhergestellt werden. Der Schlüssel muss mit dem gleichen Namen wie zuvor wiederhergestellt werden, was vom PowerShell-Befehl „Restore“ auch ausgeführt wird (siehe Schritte unten).
Wenn der Tresor verloren geht, müssen Sie einen Tresor neu erstellen und den asymmetrischen Schlüssel unter Verwendung desselben Namens wie zuvor im Tresor wiederherstellen. Der Name für den Tresor kann vom zuvor verwendeten Namen abweichen (oder diesem entsprechen). Legen Sie für den neuen Tresor die Zugriffsberechtigungen fest, damit dem SQL Server-Dienstprinzipal der für die SQL Server-Verschlüsselungsszenarios benötigte Zugriff gewährt wird. Anschließend passen Sie die SQL Server-Anmeldeinformationen dahingehend an, dass diese den neuen Tresornamen widerspiegeln.
Zusammengefasst ergeben sich folgende Schritte:
- Sichern Sie den Tresorschlüssel (mithilfe des PowerShell-Cmdlets „Backup-AzureKeyVaultKey“).
- Im Fall eines Tresorfehlers erstellen Sie einen neuen Tresor in der gleichen geografischen Region. Der Benutzer, der den Tresor erstellt, sollte sich im gleichen Standardverzeichnis wie der Dienstprinzipal befinden, der für SQL Server eingerichtet wurde.
- Stellen Sie den Schlüssel für den neuen Tresor wieder her mithilfe des PowerShell-Cmdlets „Restore-AzureKeyVaultKey“ – dieses stellt den Schlüssel mit dem gleichen Namen wie zuvor wieder her. Wenn bereits ein Schlüssel mit dem gleichen Namen vorhanden ist, tritt ein Fehler bei der Wiederherstellung auf.
- Erteilen Sie dem SQL Server-Dienstprinzipal Berechtigungen zum Verwenden dieses neuen Tresors.
- Ändern Sie die von der Datenbank-Engine verwendeten SQL Server-Anmeldeinformationen so, dass sie den neuen Tresornamen widerspiegeln (falls erforderlich).
Schlüsselsicherungen können übergreifend über Azure-Regionen wiederhergestellt werden, sofern sie in der gleichen geografischen Region oder nationalen Cloud bleiben: USA, Kanada, Japan, Australien, Indien, APAC, Europa, Brasilien, China, US-Regierung oder Deutschland.
B. Häufig gestellte Fragen
Zum Azure-Schlüsseltresor
Wie funktionieren Schlüsselvorgänge mit Azure Key Vault?
Der asymmetrische Schlüssel im Schlüsseltresor dient zum Schutz des SQL Server-Verschlüsselungsschlüssels. Nur der öffentliche Teil des asymmetrischen Schlüssels verlässt jemals den Tresor, der private Teil wird nie vom Tresor exportiert. Alle kryptografischen Vorgänge, die den asymmetrischen Schlüssel verwenden, erfolgen innerhalb des Azure Key Vault-Diensts und werden durch die Sicherheit des Diensts geschützt.
Was ist ein Schlüssel-URI?
Jeder Schlüssel im Azure Key Vault weist einen Uniform Resource Identifier (URI) auf, den Sie in Ihrer Anwendung verwenden können, um auf den Schlüssel zu verweisen. Verwenden Sie zum Abrufen der aktuellen Version das Format https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey
und zum Abrufen einer bestimmten Version das Format https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey/cgacf4f763ar42ffb0a1gca546aygd87
.
Zum Konfigurieren von SQL Server
Auf welche Endpunkte benötigt der SQL Server-Connector Zugriff? Der Connector kommuniziert mit zwei Endpunkten, die zugelassen werden müssen. Der einzige Port, der für die ausgehende Kommunikation mit diesen anderen Diensten erforderlich ist, lautet 443 für Https:
- Login.microsoftonline.com/*:443
- .Vault.Azure.NET/:443
Außerdem kann die Überprüfung der Zertifikatssperrliste HTTP-Verkehr auf Port 80 erzeugen.
Hinweis
Der Einsatz des SQL Server-Connectors für Azure Key Vault hinter einer Firewall oder einem Proxyserver kann sich auf die Leistung auswirken, wenn der Datenverkehr verzögert oder blockiert wird. Machen Sie sich mit Zugreifen auf Azure Key Vault hinter einer Firewall vertraut und stellen Sie sicher, dass die richtigen Regeln gelten.
Gewusst wie: Herstellen einer Verbindung mit Azure Key Vault über einen HTTP(S)-Proxy Server Der Connector verwendet die Proxykonfigurationseinstellungen von Internet Explorer. Diese Einstellungen können über eine Gruppenrichtlinie oder mithilfe der Registrierung gesteuert werden, es ist aber zu beachten, dass dies keine systemweiten Einstellungen sind, sondern zielgenau für das Dienstkonto angepasst werden müssen, das die SQL Server-Instanz ausführt. Wenn ein Datenbankadministrator die Einstellungen im Internet Explorer anzeigt oder bearbeitet, wirkt sich dies nur auf das Konto des Datenbankadministrators und nicht auf die SQL Server-Engine aus. Das interaktive Anmelden beim Server mithilfe des Dienstkontos ist nicht empfehlenswert und wird in vielen sicheren Umgebungen blockiert. Damit Änderungen an den konfigurierten Proxyeinstellungen angewendet werden, ist möglicherweise ein Neustart der SQL Server-Instanz erforderlich, da die Einstellungen beim ersten Versuch des Connectors, eine Verbindung mit einem Schlüsseltresor herzustellen, zwischengespeichert werden.
Welche Azure Key Vault-Schlüsselgrößen werden vom SQL Server-Connector unterstützt? Im neuesten Build des SQL Server-Connectors werden Azure Key Vault-Schlüssel der Größen 2048 und 3072 unterstützt.
Hinweis
In der Sicht „sys.asymmetric_keys
“ wird die Schlüsselgröße 2048 angezeigt, selbst wenn die Schlüsselgröße 3072 verwendet wird. Dieser Fehler in dieser Sicht ist bekannt und wird in einem zukünftigen Release vom SQL Server-Produktteam behoben.
Was sind die minimal erforderlichen Berechtigungsstufen, die für die einzelnen Konfigurationsschritte in SQL Server erforderlich sind?
Zwar können Sie alle Konfigurationsschritte als Mitglied der festen Serverrolle „sysadmin“ ausführen, Microsoft legt Ihnen jedoch dringlich nahe, die verwendeten Berechtigungen zu minimieren. Die folgende Liste definiert die minimale Berechtigungsstufe für jede Aktion.
Zum Erstellen eines Kryptografieanbieters ist die
CONTROL SERVER
-Berechtigung oder die Mitgliedschaft in der festen Serverrolle sysadmin erforderlich.Zum Ändern einer Konfigurationsoption und zum Ausführen der
RECONFIGURE
-Anweisung muss Ihnen die BerechtigungALTER SETTINGS
auf Serverebene erteilt worden sein. DieALTER SETTINGS
-Berechtigung ist implizit in den festen Serverrollen „sysadmin“ und serveradmin enthalten.Zum Erstellen von Anmeldeinformationen wird die
ALTER ANY CREDENTIAL
-Berechtigung benötigt.Zum Hinzufügen von Anmeldeinformationen zu einer Anmeldung wird die
ALTER ANY LOGIN
-Berechtigung benötigt.Zum Erstellen eines asymmetrischen Schlüssels wird die
CREATE ASYMMETRIC KEY
-Berechtigung benötigt.
Wie ändere ich mein Standard-Microsoft Entra Directory, sodass mein Schlüsseltresor im gleichen Abonnement und Directory erstellt wird wie der Dienstprinzipal, den ich für den SQL Server-Connector erstellt habe?
Öffnen Sie das Azure-Portal.
Wählen Sie in der oberen rechten Ecke der Seite das Symbol für die Einstellungen oder Ihr Benutzerprofil.
Wählen Sie auf der Seite Verzeichnisse + Abonnements die Option Alle Verzeichnisse aus, um alle Microsoft Entra-Verzeichnisse anzuzeigen, denen Sie angehören.
Sie können Ihr Startverzeichnis ändern oder zu einem anderen Verzeichnis wechseln, wenn Sie über mehrere Verzeichnisse verfügen.
Hinweis
Möglicherweise verfügen Sie nicht über die Berechtigung zum Ändern des Standardabonnements für Ihr Azure-Abonnement. Erstellen Sie in diesem Fall den Microsoft Entra-Dienstprinzipal innerhalb Ihres Standardverzeichnisses, sodass er sich im gleichen Verzeichnis wie der später verwendete Azure Key Vault befindet.
Weitere Informationen zur Microsoft Entra-ID finden Sie unter Wie Azure-Abonnements mit der Microsoft Entra ID verbunden sind.
C. Fehlercodeerläuterungen für SQL Server-Connector
Hinweis
Während Microsoft Entra-ID der neue Name für Azure Active Directory (Azure AD) ist, bleibt Azure AD in einigen fest kodierten Elementen wie Benutzeroberfläche-Feldern, Verbindungsanbietern, Fehlercodes und Cmdlets erhalten, um Störungen in bestehenden Umgebungen zu vermeiden. In diesem Artikel sind die beiden Namen austauschbar.
Anbieterfehlercodes:
Fehlercode | Symbol | Beschreibung |
---|---|---|
0 | scp_err_Success | Der Vorgang war erfolgreich. |
1 | scp_err_Failure | Beim Vorgang ist ein Fehler aufgetreten. |
2 | scp_err_InsufficientBuffer | Dieser Fehler weist die Engine an, mehr Arbeitsspeicher für den Puffer zuzuweisen. |
3 | scp_err_NotSupported | Der Vorgang wird nicht unterstützt. Beispielsweise wird der angegebene Schlüsseltyp oder Algorithmus nicht vom EKM-Anbieter unterstützt. |
4 | scp_err_NotFound | Der angegebene Schlüssel oder Algorithmus wurde vom EKM-Anbieter nicht gefunden. |
5 | scp_err_AuthFailure | Authentifizierungsfehler beim EKM-Anbieter. |
6 | scp_err_InvalidArgument | Das angegebene Argument ist ungültig. |
7 | scp_err_ProviderError | Im EKM-Anbieter ist ein nicht angegebener Fehler aufgetreten, der von der SQL-Engine abgefangen wurde. |
401 | acquireToken | Der Server hat auf die Anforderung 401 zurückgegeben. Achten Sie darauf, dass die Client-ID und das Geheimnis korrekt sind und die Zeichenfolge mit Anmeldeinformationen eine Verkettung von AAD-Client-ID und -Geheimnis ohne Bindestriche ist. |
404 | getKeyByName | Der Server hat mit 404 geantwortet, da der Schlüsselname nicht gefunden wurde. Überprüfen Sie, ob der Schlüsselname in Ihrem Tresor vorhanden ist. |
2049 | scp_err_KeyNameDoesNotFitThumbprint | Der Schlüsselname ist zu lang, um in den Fingerabdruck der SQL-Engine zu passen. Der Schlüsselname darf 26 Zeichen nicht überschreiten. |
2050 | scp_err_PasswordTooShort | Die geheime Zeichenfolge, bei der es sich um die Verkettung von AAD-Client-ID und geheimem Schlüssel handelt, ist kürzer als 32 Zeichen. |
2051 | scp_err_OutOfMemory | Die SQL-Engine verfügt nicht über ausreichend Arbeitsspeicher, deshalb ist beim Zuweisen von Arbeitsspeicher für den EKM-Anbieter ein Fehler aufgetreten. |
2052 | scp_err_ConvertKeyNameToThumbprint | Fehler beim Konvertieren des Schlüsselnamens in den Fingerabdruck. |
2053 | scp_err_ConvertThumbprintToKeyName | Fehler beim Konvertieren des Fingerabdrucks in den Schlüsselnamen. |
2057 | scp_err_ThumbprintExistedInRegistry | Der Schlüsselfingerabdruck ist bereits in der Windows-Registrierung vorhanden und einem anderen Schlüssel-URI zugeordnet. |
2058 | scp_err_FailureInRegistry | Der Vorgang konnte in der Registrierung nicht ausgeführt werden. Das SQL Server-Dienstkonto verfügt nicht über die Berechtigung zum Erstellen des Registrierungsschlüssels. |
3000 | ErrorSuccess | Der AKV-Vorgang war erfolgreich. |
3001 | ErrorUnknown | Unbekannter Fehler beim AKV-Vorgang. |
3002 | ErrorHttpCreateHttpClientOutOfMemory | Aufgrund von unzureichendem Arbeitsspeicher kann kein HttpClient für den AKV-Vorgang erstellt werden. |
3003 | ErrorHttpOpenSession | Aufgrund eines Netzwerkfehlers kann keine HTTP-Sitzung geöffnet werden. |
3004 | ErrorHttpConnectSession | Aufgrund eines Netzwerkfehlers kann keine Verbindung zu einer HTTP-Sitzung hergestellt werden. |
3005 | ErrorHttpAttemptConnect | Aufgrund eines Netzwerkfehlers kann kein Verbindungsversuch ausgeführt werden. |
3006 | ErrorHttpOpenRequest | Aufgrund eines Netzwerkfehlers kann eine Anforderung nicht geöffnet werden. |
3007 | ErrorHttpAddRequestHeader | Ein Anforderungsheader kann nicht hinzugefügt werden. |
3008 | ErrorHttpSendRequest | Aufgrund eines Netzwerkfehlers kann eine Anforderung nicht gesendet werden. |
3009 | ErrorHttpGetResponseCode | Aufgrund eines Netzwerkfehlers kann kein Antwortcode abgerufen werden. |
3010 | ErrorHttpResponseCodeUnauthorized | Der Server hat auf die Anforderung 401 zurückgegeben. |
3011 | ErrorHttpResponseCodeThrottled | Der Server hat die Anforderung gedrosselt. |
3012 | ErrorHttpResponseCodeClientError | Die vom Connector gesendete Anforderung ist ungültig. Dies bedeutet normalerweise, dass der Name des Schlüssels ungültig ist oder ungültige Zeichen enthält. |
3013 | ErrorHttpResponseCodeServerError | Der Server hat mit einem Antwortcode zwischen 500 und 600 geantwortet. |
3014 | ErrorHttpQueryHeader | Es kann keine Abfrage auf den Antwortheader ausgeführt werden. |
3015 | ErrorHttpQueryHeaderOutOfMemoryCopyHeader | Der Antwortheader kann aufgrund von unzureichendem Arbeitsspeicher nicht kopiert werden. |
3016 | ErrorHttpQueryHeaderOutOfMemoryReallocBuffer | Der Antwortheader kann bei der Neuzuweisung eines Puffers aufgrund von unzureichendem Arbeitsspeicher nicht abgefragt werden. |
3017 | ErrorHttpQueryHeaderNotFound | Der Abfrageheader wurde in der Antwort nicht gefunden. |
3018 | ErrorHttpQueryHeaderUpdateBufferLength | Beim Abfragen des Antwortheaders kann die Pufferlänge nicht aktualisiert werden. |
3019 | ErrorHttpReadData | Die Antwortdaten können aufgrund eines Netzwerkfehlers nicht gelesen werden. |
3076 | ErrorHttpResourceNotFound | Der Server hat mit 404 geantwortet, da der Schlüsselname nicht gefunden wurde. Überprüfen Sie, ob der Schlüsselname in Ihrem Tresor vorhanden ist. |
3077 | ErrorHttpOperationForbidden | Der Server hat mit 403 geantwortet, da der Benutzer keine ordnungsgemäße Berechtigung zum Ausführen der Aktion besitzt. Überprüfen Sie, ob Sie über die Berechtigung für den angegebenen Vorgang verfügen. Der Connector benötigt zur ordnungsgemäßen Funktion mindestens die Berechtigungen „get, list, wrapKey, unwrapKey“. |
3100 | ErrorHttpCreateHttpClientOutOfMemory | Es kann kein HttpClient für den AKV-Vorgang aufgrund von unzureichendem Arbeitsspeicher erstellt werden. |
3101 | ErrorHttpOpenSession | Aufgrund eines Netzwerkfehlers kann keine Http-Sitzung geöffnet werden. |
3102 | ErrorHttpConnectSession | Aufgrund eines Netzwerkfehlers kann keine Verbindung mit einer Http-Sitzung hergestellt werden. |
3103 | ErrorHttpAttemptConnect | Aufgrund eines Netzwerkfehlers kann kein Verbindungsversuch ausgeführt werden. |
3104 | ErrorHttpOpenRequest | Aufgrund eines Netzwerkfehlers kann eine Anforderung nicht geöffnet werden. |
3105 | ErrorHttpAddRequestHeader | Ein Anforderungsheader kann nicht hinzugefügt werden. |
3106 | ErrorHttpSendRequest | Aufgrund eines Netzwerkfehlers kann eine Anforderung nicht gesendet werden. |
3107 | ErrorHttpGetResponseCode | Aufgrund eines Netzwerkfehlers kann kein Antwortcode abgerufen werden. |
3108 | ErrorHttpResponseCodeUnauthorized | Der Server hat auf die Anforderung 401 zurückgegeben. Achten Sie darauf, dass die Client-ID und das Geheimnis korrekt sind und die Anmeldeinformations-Zeichenfolge eine Verkettung von AAD-Client-ID und-Geheimnis ohne Bindestriche ist. |
3109 | ErrorHttpResponseCodeThrottled | Der Server hat die Anforderung gedrosselt. |
3110 | ErrorHttpResponseCodeClientError | Die Anforderung ist ungültig. Dies bedeutet normalerweise, dass der Name des Schlüssels ungültig ist oder ungültige Zeichen enthält. |
3111 | ErrorHttpResponseCodeServerError | Der Server hat mit einem Antwortcode zwischen 500 und 600 geantwortet. |
3112 | ErrorHttpResourceNotFound | Der Server hat mit 404 geantwortet, da der Schlüsselname nicht gefunden wurde. Überprüfen Sie, ob der Schlüsselname in Ihrem Tresor vorhanden ist. |
3113 | ErrorHttpOperationForbidden | Der Server hat mit 403 geantwortet, da der Benutzer keine ordnungsgemäße Berechtigung zum Ausführen der Aktion besitzt. Überprüfen Sie, ob Sie über die Berechtigung für den angegebenen Vorgang verfügen. Es sind mindestens die Berechtigungen „get“, „wrapKey“ und „unwrapKey“ erforderlich. |
3114 | ErrorHttpQueryHeader | Es kann keine Abfrage auf den Antwortheader ausgeführt werden. |
3115 | ErrorHttpQueryHeaderOutOfMemoryCopyHeader | Der Antwortheader kann aufgrund von unzureichendem Arbeitsspeicher nicht kopiert werden. |
3116 | ErrorHttpQueryHeaderOutOfMemoryReallocBuffer | Der Antwortheader kann bei der Neuzuweisung eines Puffers aufgrund von unzureichendem Arbeitsspeicher nicht abgefragt werden. |
3117 | ErrorHttpQueryHeaderNotFound | Der Abfrageheader wurde in der Antwort nicht gefunden. |
3118 | ErrorHttpQueryHeaderUpdateBufferLength | Beim Abfragen des Antwortheaders kann die Pufferlänge nicht aktualisiert werden. |
3119 | ErrorHttpReadData | Die Antwortdaten können aufgrund eines Netzwerkfehlers nicht gelesen werden. |
3120 | ErrorHttpGetResponseOutOfMemoryCreateTempBuffer | Der Antworttext kann beim Erstellen eines temporären Puffers aufgrund von nicht genügendem Arbeitsspeicher nicht abgerufen werden. |
3121 | ErrorHttpGetResponseOutOfMemoryGetResultString | Der Antworttext kann aufgrund von nicht genügendem Arbeitsspeicher beim Abrufen einer Ergebniszeichenfolge nicht abgerufen werden. |
3122 | ErrorHttpGetResponseOutOfMemoryAppendResponse | Der Antworttext kann beim Anfügen der Antwort aufgrund von nicht genügendem Arbeitsspeicher nicht abgerufen werden. |
3200 | ErrorGetAADValuesOutOfMemoryConcatPath | Werte von Azure Active Directory-Challenge Headern können beim Verketten des Pfads wegen nicht genügendem Arbeitsspeicher nicht abgerufen werden. |
3201 | ErrorGetAADDomainUrlStartPosition | Die Anfangsposition für die Azure Active Directory-Domänen-URL wurde im falsch formatierten Antwort-Challenge Header nicht gefunden. |
3202 | ErrorGetAADDomainUrlStopPosition | Die Endposition für die Azure Active Directory-Domänen-URL wurde im falsch formatierten Antwort-Challenge Header nicht gefunden. |
3203 | ErrorGetAADDomainUrlMalformatted | Der Azure Active Directory-Antwort-Challenge Header weist ein falsches Format auf und enthält die AAD-Domänen-URL nicht. |
3204 | ErrorGetAADDomainUrlOutOfMemoryAlloc | Nicht genügend Arbeitsspeicher beim Zuweisen des Puffers für die Azure Active Directory Domänen-URL. |
3205 | ErrorGetAADTenantIdOutOfMemoryAlloc | Nicht genügend Arbeitsspeicher beim Zuweisen des Puffers für die Azure Active Directory-Mandanten-ID. |
3206 | ErrorGetAKVResourceUrlStartPosition | Die Anfangsposition für die Azure Key Vault-Ressourcen-URL wurde im falsch formatierten Antwort-Challenge Header nicht gefunden. |
3207 | ErrorGetAKVResourceUrlStopPosition | Die Endposition für die Azure Key Vault-Ressourcen-URL wurde im falsch formatierten Antwort-Challenge Header nicht gefunden. |
3208 | ErrorGetAKVResourceUrlOutOfMemoryAlloc | Nicht genügend Arbeitsspeicher beim Zuweisen des Puffers für die Azure Key Vault-Ressourcen-URL. |
3300 | ErrorGetTokenOutOfMemoryConcatPath | Das Token kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Anforderungspfads nicht abgerufen werden. |
3301 | ErrorGetTokenOutOfMemoryConcatBody | Das Token kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Antworttexts nicht abgerufen werden. |
3302 | ErrorGetTokenOutOfMemoryConvertResponseString | Das Token kann aufgrund von nicht genügend Arbeitsspeicher beim Konvertieren der Antwortzeichenfolge nicht abgerufen werden. |
3303 | ErrorGetTokenBadCredentials | Das Token kann aufgrund falscher Anmeldeinformationen nicht abgerufen werden. Vergewissern Sie sich, dass die Anmeldeinformations-Zeichenfolge des Zertifikats gültig ist. |
3304 | ErrorGetTokenFailedToGetToken | Obwohl die Anmeldeinformationen richtig sind, konnte der Vorgang kein gültiges Token abrufen. |
3305 | ErrorGetTokenRejected | Das Token ist gültig, wird aber vom Server abgelehnt. |
3306 | ErrorGetTokenNotFound | Das Token wurde in der Antwort nicht gefunden. |
3307 | ErrorGetTokenJsonParser | Die JSON-Antwort des Servers kann nicht analysiert werden. |
3308 | ErrorGetTokenExtractToken | Das Token kann nicht aus der JSON-Antwort extrahiert werden. |
3400 | ErrorGetKeyByNameOutOfMemoryConvertResponseString | Der Schlüssel kann aufgrund von nicht genügend Arbeitsspeicher beim Konvertieren der Antwortzeichenfolge nicht anhand des Namens abgerufen werden. |
3401 | ErrorGetKeyByNameOutOfMemoryConcatPath | Der Schlüssel kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Pfads nicht anhand des Namens abgerufen werden. |
3402 | ErrorGetKeyByNameOutOfMemoryConcatHeader | Der Schlüssel kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Headers nicht anhand des Namens abgerufen werden. |
3403 | ErrorGetKeyByNameNoResponse | Der Schlüssel kann aufgrund einer fehlenden Antwort vom Server nicht anhand des Namens abgerufen werden. |
3404 | ErrorGetKeyByNameJsonParser | Der Schlüssel kann nicht anhand des Namens abgerufen werden, weil die JSON-Antwort nicht analysiert werden konnte. |
3405 | ErrorGetKeyByNameExtractKeyNode | Der Schlüssel kann nicht anhand des Namens abgerufen werden, da der Schlüsselknoten nicht aus der Antwort extrahiert werden konnte. |
3406 | ErrorGetKeyByNameExtractKeyId | Der Schlüssel kann nicht anhand des Namens abgerufen werden, da die Schlüssel-ID nicht aus der Antwort extrahiert werden konnte. |
3407 | ErrorGetKeyByNameExtractKeyType | Der Schlüssel kann nicht anhand des Namens abgerufen werden, da der Schlüsseltyp nicht aus der Antwort extrahiert werden konnte. |
3408 | ErrorGetKeyByNameExtractKeyN | Der Schlüssel kann nicht anhand des Namens abgerufen werden, da der Schlüssel-N nicht aus der Antwort extrahiert werden konnte. |
3409 | ErrorGetKeyByNameBase64DecodeN | Der Schlüssel kann nicht anhand des Namens abgerufen werden, da der N nicht Base64-dekodiert werden konnte. |
3410 | ErrorGetKeyByNameExtractKeyE | Der Schlüssel kann nicht anhand des Namens abgerufen werden, da der Schlüssel-E nicht aus der Antwort extrahiert werden konnte. |
3411 | ErrorGetKeyByNameBase64DecodeE | Der Schlüssel kann nicht anhand des Namens abgerufen werden, da der E nicht Base64-dekodiert werden konnte. |
3412 | ErrorGetKeyByNameExtractKeyUri | Der Schlüssel-URI kann nicht aus der Antwort extrahiert werden. |
3500 | ErrorBackupKeyOutOfMemoryConvertResponseString | Der Schlüssel kann aufgrund von nicht genügendem Arbeitsspeicher beim Konvertieren der Antwortzeichenfolge nicht gesichert werden. |
3501 | ErrorBackupKeyOutOfMemoryConcatPath | Der Schlüssel kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Pfads nicht gesichert werden. |
3502 | ErrorBackupKeyOutOfMemoryConcatHeader | Der Schlüssel kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Anforderungspfads nicht gesichert werden. |
3503 | ErrorBackupKeyNoResponse | Der Schlüssel kann nicht gesichert werden, da der Server nicht antwortet. |
3504 | ErrorBackupKeyJsonParser | Der Schlüssel kann nicht gesichert werden, weil die JSON-Antwort nicht analysiert werden konnte. |
3505 | ErrorBackupKeyExtractValue | Der Schlüssel kann nicht gesichert werden, weil der Wert nicht aus der JSON-Antwort extrahiert werden konnte. |
3506 | ErrorBackupKeyBase64DecodeValue | Der Schlüssel kann aufgrund eines Fehlers bei der Base64-Decodierung des Wertfelds nicht gesichert werden. |
3600 | ErrorWrapKeyOutOfMemoryConvertResponseString | Der Schlüssel kann aufgrund von nicht genügendem Arbeitsspeicher beim Konvertieren der Antwortzeichenfolge nicht umschlossen werden. |
3601 | ErrorWrapKeyOutOfMemoryConcatPath | Der Schlüssel kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Pfads nicht umschlossen werden. |
3602 | ErrorWrapKeyOutOfMemoryConcatHeader | Der Schlüssel kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Headers nicht umschlossen werden. |
3603 | ErrorWrapKeyOutOfMemoryConcatBody | Der Schlüssel kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Textkörpers nicht umschlossen werden. |
3604 | ErrorWrapKeyOutOfMemoryConvertEncodedBody | Der Schlüssel kann aufgrund von nicht genügendem Arbeitsspeicher beim Konvertieren des codierten Textkörpers nicht umschlossen werden. |
3605 | ErrorWrapKeyBase64EncodeKey | Der Schlüssel kann nicht umschlossen werden, da bei der Base64-Codierung des Schlüssels ein Fehler auftrat. |
3606 | ErrorWrapKeyBase64DecodeValue | Der Schlüssel kann aufgrund eines Fehlers bei der Base64-Decodierung des Antwortwerts nicht umschlossen werden. |
3607 | ErrorWrapKeyJsonParser | Der Schlüssel kann nicht umschlossen werden, weil die JSON-Antwort nicht analysiert werden konnte. |
3608 | ErrorWrapKeyExtractValue | Der Schlüssel kann aufgrund eines Fehlers beim Extrahieren des Werts aus der Antwort nicht umschlossen werden. |
3609 | ErrorWrapKeyNoResponse | Der Schlüssel kann nicht umschlossen werden, da der Server nicht antwortet. |
3700 | ErrorUnwrapKeyOutOfMemoryConvertResponseString | Die Umschließung des Schlüssels kann aufgrund von nicht genügendem Arbeitsspeicher beim Konvertieren der Antwortzeichenfolge nicht aufgehoben werden. |
3701 | ErrorUnwrapKeyOutOfMemoryConcatPath | Die Umschließung des Schlüssels kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Pfads nicht aufgehoben werden. |
3702 | ErrorUnwrapKeyOutOfMemoryConcatHeader | Die Umschließung des Schlüssels kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Headers nicht aufgehoben werden. |
3703 | ErrorUnwrapKeyOutOfMemoryConcatBody | Die Umschließung des Schlüssels kann aufgrund von nicht genügendem Arbeitsspeicher beim Verketten des Textkörpers nicht aufgehoben werden. |
3704 | ErrorUnwrapKeyOutOfMemoryConvertEncodedBody | Die Umschließung des Schlüssels kann aufgrund von nicht genügendem Arbeitsspeicher beim Konvertieren des codierten Textkörpers nicht aufgehoben werden. |
3705 | ErrorUnwrapKeyBase64EncodeKey | Die Umschließung des Schlüssels kann nicht aufgehoben werden, da bei der Base64-Codierung des Schlüssels ein Fehler auftrat. |
3706 | ErrorUnwrapKeyBase64DecodeValue | Die Umschließung des Schlüssels kann aufgrund eines Fehlers bei der Base64-Decodierung des Antwortwerts nicht aufgehoben werden. |
3707 | ErrorUnwrapKeyJsonParser | Die Umschließung des Schlüssels kann aufgrund eines Fehlers beim Extrahieren des Werts aus der Antwort nicht aufgehoben werden. |
3708 | ErrorUnwrapKeyExtractValue | Die Umschließung des Schlüssels kann aufgrund eines Fehlers beim Extrahieren des Werts aus der Antwort nicht aufgehoben werden. |
3709 | ErrorUnwrapKeyNoResponse | Die Umschließung des Schlüssels kann nicht aufgehoben werden, da der Server nicht antwortet. |
3800 | ErrorSecretAuthParamsGetRequestBody | Fehler beim Erstellen des Anforderungstexts mithilfe von AAD-ClientID und Geheimnis. |
3801 | ErrorJWTTokenCreateHeader | Fehler beim Erstellen eines JWT-Token-Headers für die Authentifizierung bei AAD. |
3802 | ErrorJWTTokenCreatePayloadGUID | Fehler beim Erstellen der GUID für die JWT-Token-Nutzlast für die Authentifizierung bei AAD. |
3803 | ErrorJWTTokenCreatePayload | Fehler beim Erstellen der JWT-Token-Nutzlast für die Authentifizierung bei AAD. |
3804 | ErrorJWTTokenCreateSignature | Fehler beim Erstellen einer JWT-Token-Signatur für die Authentifizierung bei AAD. |
3805 | ErrorJWTTokenSignatureHashAlg | Fehler beim Abrufen des SHA256-Hash-Algorithmus für die Authentifizierung bei AAD. |
3806 | ErrorJWTTokenSignatureHash | Fehler beim Erstellen des SHA256-Hashs für die JWT-Token-Authentifizierung bei AAD. |
3807 | ErrorJWTTokenSignatureSignHash | Fehler beim Signieren des JWT-Token-Hashs für die Authentifizierung bei AAD. |
3808 | ErrorJWTTokenCreateToken | Fehler beim Erstellen des JWT-Tokens für die Authentifizierung bei AAD. |
3809 | ErrorPfxCertAuthParamsImportPfx | Fehler beim Importieren des PFX-Zertifikats für die Authentifizierung bei AAD. |
3810 | ErrorPfxCertAuthParamsGetThumbprint | Fehler beim Abrufen des Fingerabdrucks aus dem PFX-Zertifikat für die Authentifizierung bei AAD. |
3811 | ErrorPfxCertAuthParamsGetPrivateKey | Fehler beim Abrufen des privaten Schlüssels aus dem PFX-Zertifikat für die Authentifizierung bei AAD. |
3812 | ErrorPfxCertAuthParamsSignAlg | Fehler beim Abrufen des RSA-Signaturalgorithmus für die PFX-Zertifikatauthentifizierung bei AAD. |
3813 | ErrorPfxCertAuthParamsImportForSign | Fehler beim Importieren des privaten PFX-Schlüssels für die RSA-Signatur für die Authentifizierung bei AAD. |
3814 | ErrorPfxCertAuthParamsCreateRequestBody | Fehler beim Erstellen des Antworttexts aus dem PFX-Zertifikat für die Authentifizierung bei AAD. |
3815 | ErrorPEMCertAuthParamsGetThumbprint | Fehler bei der Base64-Decodierung des Fingerabdrucks für die Authentifizierung bei AAD. |
3816 | ErrorPEMCertAuthParamsGetPrivateKey | Fehler beim Abrufen des privaten RSA-Schlüssels aus PEM für die Authentifizierung bei AAD. |
3817 | ErrorPEMCertAuthParamsSignAlg | Fehler beim Abrufen des RSA-Signaturalgorithmus für die PEM-Authentifizierung mit dem privaten Schlüssel bei AAD. |
3818 | ErrorPEMCertAuthParamsImportForSign | Fehler beim Importieren des privaten PEM-Schlüssels für die RSA-Signatur für die Authentifizierung bei AAD. |
3819 | ErrorPEMCertAuthParamsCreateRequestBody | Fehler beim Erstellen des Anforderungstexts aus dem privaten PEM-Schlüssel für die Authentifizierung bei AAD. |
3820 | ErrorLegacyPrivateKeyAuthParamsSignAlg | Fehler beim Abrufen des RSA-Signaturalgorithmus für die Legacy-Authentifizierung mit dem privaten Schlüssel bei AAD. |
3821 | ErrorLegacyPrivateKeyAuthParamsImportForSign | Fehler beim Importieren des privaten Legacy-Schlüssels für die RSA-Signatur für die Authentifizierung bei AAD. |
3822 | ErrorLegacyPrivateKeyAuthParamsCreateRequestBody | Fehler beim Erstellen des Anforderungstexts aus dem privaten Legacy-Schlüssel für die Authentifizierung bei AAD. |
3900 | ErrorAKVDoesNotExist | Fehler: Nicht aufgelöster Internetname. Dies weist normalerweise darauf hin, dass der Azure Key Vault gelöscht wurde. |
4000 | ErrorCreateKeyVaultRetryManagerOutOfMemory | Es kann kein RetryManager für den AKV-Vorgang aufgrund von unzureichendem Arbeitsspeicher erstellt werden. |
Wenn Sie Ihren Fehlercode in dieser Tabelle nicht finden, beachten Sie, dass ein Fehler auch noch aus einer Reihe weiterer Gründe auftreten kann:
Möglicherweise haben Sie keinen Internetzugriff und können nicht auf Ihre Azure Key Vault-Instanz zugreifen. Überprüfen Sie Ihre Internetverbindung.
Der Azure Key Vault-Dienst ist möglicherweise außer Betrieb. Versuchen Sie es später erneut.
Möglicherweise haben Sie den asymmetrischen Schlüssel im Azure Key Vault oder SQL Server gelöscht. Stellen Sie den Schlüssel wieder her.
Wenn Sie den Fehler „Die Bibliothek kann nicht geladen werden“ erhalten, überprüfen Sie, ob die für die ausgeführte SQL Server-Version geeignete Version der weitervertreibbaren Visual Studio C++-Komponente installiert ist. In der folgenden Tabelle wird angegeben, welche Version aus dem Microsoft Download Center installiert werden muss.
Das Windows-Ereignisprotokoll protokolliert auch Fehler im Zusammenhang mit dem SQL Server-Connector. Dadurch kann zusätzlicher Kontext zu den eigentlichen Fehlerursachen bereitstehen. Die Quelle im Windows-Anwendungsereignisprotokoll ist „SQL Server-Connector für Microsoft Azure Key Vault“.
C++-Laufzeitbibliotheken für den SQL Server-Connector 1.0.5.0
SQL Server-Version | Verteilbarer Installationslink unter Verwendung des SQL Server-Connectors 1.0.5.0 |
---|---|
2008, 2008 R2, 2012, 2014 | Visual C++ Redistributable Packages für Visual Studio 2013 |
2016, 2017, 2019 | Visual C++ Redistributable für Visual Studio 2015 |
C++-Laufzeitbibliotheken für den SQL Server-Connector 1.0.4.0
SQL Server-Version | Redistributable Install Link bei Verwendung des SQL Server-Connectors 1.0.4.0 |
---|---|
2008, 2008 R2, 2012, 2014, 2016, 2017, 2019 | Visual C++ Redistributable Packages für Visual Studio 2013 |
Zusätzliche Referenzen
Weitere Informationen über die erweiterbare Schlüsselverwaltung:
SQL-Verschlüsselungen, die EKM unterstützen:
Verwandte Transact-SQL-Befehle:
Azure Key Vault-Dokumentation
Referenz der PowerShell- Azure Key Vault-Cmdlets
Zugehöriger Inhalt
Verwenden von SQL Server-Connector mit SQL-Verschlüsselungsfunktionen
Installationsschritte für die Erweiterbare Schlüsselverwaltung mit Azure Key Vault.
Weitere Beispielskripts finden Sie im Blog zum Thema SQL Server Transparent Data Encryption und erweiterbare Schlüsselverwaltung mit Azure Key Vault.