Freigeben über


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.