Ich versuche, den Hauptschlüssel für eine TDE-Datenbank zu sichern, aber SQL Server gibt an, dass es keinen gibt. Es ist ein bisschen komisch, aber ich bin sicher, ich mache nur etwas falsch. Ich bin Systemadministrator auf dem Server, daher sollte ich alles sehen können.
Dies ist die Aussage, die fehlschlägt:
USE [my_db];
BACKUP MASTER KEY
TO FILE = 'C:\master_key'
ENCRYPTION BY PASSWORD = 'some_killer_password';
Und die Fehlermeldung gab zurück:
Meldung 15151, Ebene 16, Status 1, Zeile 11
Der symmetrische Schlüssel 'Hauptschlüssel' kann nicht gefunden werden, da er nicht vorhanden ist oder Sie keine Berechtigung haben.
Ich habe Folgendes verwendet, um die Details zum Datenbankverschlüsselungsschlüssel und zum zugehörigen Zertifikat anzuzeigen. Die Zertifikatdetails aus der sys.certificates
Tabelle sind jedoch leer.
USE [my_db];
SELECT DatabaseName = d.name
, ddek.encryptor_type
, ddek.opened_date
, c.name
, c.cert_serial_number
, c.pvt_key_encryption_type_desc
, c.subject
FROM sys.dm_database_encryption_keys ddek
INNER JOIN sys.databases d ON ddek.database_id = d.database_id
LEFT JOIN sys.certificates c ON ddek.encryptor_thumbprint = c.thumbprint
WHERE d.name <> 'tempdb' /* tempdb is auto-encrypted by SQL Server */
╔══════════════╦════════════════╦═════════════════ ════════╦══════╦════════════════════╦═════════════ ═════════════════╦═════════╗ ║ DatabaseName ║ encryptor_type ║ open_date ║ name ║ cert_serial_number ║ pvt_key_encryption_type_desc ║ subject ║ ╠══════════════╬════════════════╬═════════════════ ════════╬══════╬════════════════════╬═════════════ ═════════════════╬═════════╣ ║ my_db ║ CERTIFICATE ║ 2017-09-20 11: 24: 13.590 ║ NULL ║ NULL ║ NULL ║ NULL ║ ╚══════════════╩════════════════╩═════════════════ ════════╩══════╩════════════════════╩═════════════ ═════════════════╩═════════╝
Ich kann also den Datenbankverschlüsselungsschlüssel sehen [my_db]
und sehen, dass er durch ein Zertifikat verschlüsselt ist, aber das Zertifikat existiert nicht?