MSSQLSERVER_15581

Dotyczy:SQL Server

Details

Attribute Value
Nazwa produktu SQL Server
Identyfikator zdarzenia 15581
Źródło zdarzenia MSSQLSERVER
Component SQLEngine
Nazwa symboliczna SEC_NODBMASTERKEYERR
Tekst wiadomości Utwórz klucz główny w bazie danych lub otwórz klucz główny w sesji przed wykonaniem tej operacji.

Explanation

Błąd 15581 pojawia się, gdy SQL Server nie jest w stanie odzyskać bazy danych włączonej do szyfrowania danych transparentnego (TDE). Komunikat o błędzie, taki jak poniższy, jest rejestrowany w logu błędów SQL Server

2020-01-14 22:16:26.47 spid20s Błąd: 15581, Nasilenie: 16, Stan: 3.
2020-01-14 22:16:26.47 spid20s Prosimy o utworzenie klucza głównego w bazie danych lub otwarcie klucza głównego w sesji przed wykonaniem tej operacji.

Możliwa przyczyna

Problem ten pojawia się, gdy szyfrowanie klucza głównego dla klucza głównego bazy danych w głównej bazie danych zostaje usunięte po wykonaniu następującego polecenia:

Use master
go
alter master key drop encryption by service master key

Klucz główny serwisu służy do szyfrowania certyfikatu używanego przez klucz główny bazy danych. Każda próba użycia bazy danych z TDE wymaga dostępu do klucza głównego bazy danych w bazie głównej. Klucz główny, który nie jest szyfrowany przez klucz głównego serwisu, musi zostać otwarty za pomocą OPEN MASTER KEY instrukcji (Transact-SQL) wraz z hasłem na każdej sesji wymagającej dostępu do klucza głównego. Ponieważ tego polecenia nie można wykonać na sesjach systemowych, odzyskiwanie nie może zostać ukończone na bazach danych z TDE.

Akcja użytkownika

Aby rozwiązać problem, włącz automatyczne odszyfrowanie klucza głównego. W tym celu uruchom następujące polecenia:

Use master
go
open master key DECRYPTION BY PASSWORD = 'password'
alter master key add encryption by service master key

Użyj poniższego zapytania, aby sprawdzić, czy automatyczne odszyfrowanie klucza głównego przez klucz głównego usługi zostało wyłączone dla głównej bazy danych:

select is_master_key_encrypted_by_server from sys.databases where name = 'master'

Jeśli to zapytanie zwraca wartość 0, automatyczne odszyfrowanie klucza głównego przez klucz głównego usługi zostało wyłączone.

Więcej informacji

W niektórych przypadkach instancja SQL Server może wydawać się nieresponsywna. Jeśli zapytasz sys.dm_exec_requests dynamiczny widok zarządzania, zauważysz, że LogWriter wątek i inne wątki wykonujące operacje DML czekają w nieskończoność z WRITELOG wait_type. Inne sesje mogą również czekać, próbując zdobyć zamki.