Ich habe eine DB, auf der ich symmetrische Verschlüsselung aktiviert, um einige Spalten zu verschlüsseln. habe ich eine SP-Verschlüsselung zu aktivieren, nachdem ich die DB aus Skript zu erstellen, wie untenSQL Server 2008R2 Enterprise mit Datenverschlüsselung - Backup und Restore
CREATE PROCEDURE [dbo].[sys_EnableSymmetricEncryption]
AS
BEGIN
--If there is no master key, create one now.
IF NOT EXISTS
(SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = '9809u0ij989oih9o8yyo98yyo89uyp9p9'
CREATE CERTIFICATE My_Certificate
WITH SUBJECT = 'My Database';
CREATE SYMMETRIC KEY My_Key_01
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE My_Certificate;
END
So, nachdem ich db aus Skript, ich das laufen und dann kann ich Speichern von Daten in verschlüsselten Spalten
mit
INSERT INTO [dbo].[Cards]
([CardNumber]
,[CardSecurityCode]
,[CardExpirationDate]
,[NameOnCard])
VALUES
(EncryptByKey(Key_GUID('My_Key_01'), @CardNumber) ,
EncryptByKey(Key_GUID('My_Key_01'), @CardSecurityCode) ,
EncryptByKey(Key_GUID('My_Key_01'), @CardExpirationDate) ,
EncryptByKey(Key_GUID('My_Key_01'), @NameOnCard))
und abrufen von Daten mit
OPEN SYMMETRIC KEY My_Key_01
DECRYPTION BY CERTIFICATE My_Certificate;
SELECT [CardID]
,CONVERT(nvarchar, DecryptByKey([CardNumber])) as 'CardNumber'
,CONVERT(nvarchar, DecryptByKey([CardSecurityCode])) as 'CardSecurityCode'
,CONVERT(nvarchar, DecryptByKey([CardExpirationDate])) as 'CardExpirationDate'
,CONVERT(nvarchar, DecryptByKey([NameOnCard])) as 'NameOnCard'
FROM [Cards]
Alle funktioniert gut, bis ich backup db und versuchen, die Sicherung auf einem diff wiederherstellen Erent Server Nachdem ich wieder herstellen, wenn ich versuche, wählen zu laufen (wie oben) bekomme ich diesen Fehler
Please create a master key in the database or open the master key in the session before performing this operation.
Also ich versuche, den Schlüssel mit
IF NOT EXISTS
(SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = '9809u0ij989oih9o8yyo98yyo89uyp9p9'
neu Aber dann wählen In immer noch den gleichen Fehler. Wenn ich versuche, das erste Sp gezeigt oben zu laufen, Hauptschlüssel, cert und symmetrischen Schlüssel zu erstellen, erhalte ich Fehler
Msg 15581, Level 16, State 3, Procedure sys_EnableSymmetricEncryption, Line 11 Please create a master key in the database or open the master key in the session before performing this operation. Msg 15282, Level 16, State 1, Procedure sys_EnableSymmetricEncryption, Line 14 A key with name 'OneTest_Key_01' or user defined unique identifier already exists or you do not have permissions to create
Vielleicht sollte ich versuchen, das Zertifikat und den symmetrischen Schlüssel zu löschen, bevor Sie versuchen, sie zu schaffen aber ich weiß nicht wo sie sich befinden.
Irgendeine Idee, wie man damit umgeht?
Dank
PS, wenn ich in demselben Server wiederherstellen, auch wenn andere Datenbank, arbeitet alles in Ordnung
Als ich das ich die folgende Fehlermeldung aus:
Meldung 15329, Ebene 16, Status 20, Zeile 1 Der aktuelle Hauptschlüssel kann nicht entschlüsselt werden. Wenn dies ein Datenbankhauptschlüssel ist, sollten Sie versuchen, ihn in der Sitzung zu öffnen, bevor Sie diesen Vorgang ausführen. Die FORCE-Option kann verwendet werden, um diesen Fehler zu ignorieren und die Operation fortzusetzen, aber die Daten, die mit dem alten Hauptschlüssel verschlüsselt wurden, gehen verloren.
Irgendeine Idee? – bzamfir
leider keine anderen Ideen. Ich konnte nur teilen, was ich im Netz fand: http://social.msdn.microsoft.com/Forums/en-US/sqlsecurity/thread/1962ea62-28d8-4331-af6e-a73e1a0d4bcc/ http: // stackoverflow. com/questions/2017865/sql-server-2008-öffnen-master-key-error-on-physischen-server-change-over – cichy