MSSQLSERVER_15581
Gilt für: SQL Server
Details
attribute | Wert |
---|---|
Produktname | SQL Server |
Ereignis-ID | 15581 |
Ereignisquelle | MSSQLSERVER |
Komponente | SQLEngine |
Symbolischer Name | SEC_NODBMASTERKEYERR |
Meldungstext | Erstellen Sie einen Hauptschlüssel in der Datenbank, oder öffnen Sie den Hauptschlüssel in der Sitzung, bevor Sie diesen Vorgang ausführen. |
Erklärung
Fehler 15581 wird ausgelöst, wenn SQL Server keine Datenbank wiederherstellen kann, die für die transparente Datenverschlüsselung (TDE) aktiviert ist. Eine Fehlermeldung wie die folgende wird im SQL Server-Fehlerprotokoll protokolliert.
2020-01-14 22:16:26.47 spid20s Fehler: 15581, Schweregrad: 16, Zustand: 3.
2020-01-14 22:16:26.47 spid20s Erstellen Sie einen Hauptschlüssel in der Datenbank, oder öffnen Sie den Hauptschlüssel in der Sitzung, bevor Sie diesen Vorgang ausführen.
Mögliche Ursache
Dieses Problem tritt auf, wenn die Verschlüsselung durch den Hauptschlüssel des Diensts für den Hauptschlüssel der Datenbank in der Masterdatenbank entfernt wird, wenn der folgende Befehl ausgeführt wird:
Use master
go
alter master key drop encryption by service master key
Der Hauptschlüssel des Dienste wird verwendet, um das Zertifikat zu verschlüsseln, das von dem Hauptschlüssel der Datenbank verwendet wird. Jeder Versuch, die Datenbank mit TDE-Aktivierung zu verwenden, benötigt Zugriff auf den Hauptschlüssel der Datenbank in der Masterdatenbank. Ein Hauptschlüssel, der nicht vom Hauptschlüssel des Diensts verschlüsselt ist, muss geöffnet werden, indem in jeder Sitzung, für die Zugriff auf den Hauptschlüssel erforderlich ist, die Anweisung OPEN MASTER KEY (Transact-SQL) zusammen mit einem Kennwort verwendet wird. Da dieser Befehl nicht für Systemsitzungen ausgeführt werden kann, kann die Wiederherstellung für Datenbanken mit TDE-Aktivierung nicht abgeschlossen werden.
Aktion des Benutzers
Zur Lösung dieses Problems aktivieren Sie die automatische Entschlüsselung des Hauptschlüssels. Führen Sie zu diesem Zweck die folgenden Befehle aus:
Use master
go
open master key DECRYPTION BY PASSWORD = 'password'
alter master key add encryption by service master key
Verwenden Sie die folgende Abfrage, um zu bestimmen, ob die automatische Entschlüsselung des Hauptschlüssels durch den Hauptschlüssel des Diensts für die Masterdatenbank deaktiviert wurde:
select is_master_key_encrypted_by_server from sys.databases where name = 'master'
Wenn diese Abfrage einen Wert von 0 zurückgibt, wurde die automatische Entschlüsselung des Hauptschlüssels durch den Hauptschlüssel des Diensts deaktiviert.
Weitere Informationen
In einigen Fällen wird die Instanz von SQL Server möglicherweise nicht reagiert. Wenn Sie die dynamische Verwaltungssicht sys.dm_exec_requests
abfragen, können Sie feststellen, dass der LogWriter
-Thread und weitere Threads, die DML-Vorgänge durchführen, mit WRITELOG wait_type auf unbestimmte Zeit warten. Andere Sitzungen warten möglicherweise ebenfalls, während sie versuchen, Sperren abzurufen.