2010-04-02 14 views
5

abbiamo un server con un database che dispone di una chiave simmetrica (Database -> Sicurezza -> chiave simmetrica). Abbiamo un database duplicato di backup che stiamo usando come database di test, ma non abbiamo questa chiave in là.Come posso duplicare una chiave simmetrica di SQL Server?

Come posso duplicare questa chiave simmetrica (o crearne una nuova esattamente come la vecchia) e inserirla nei database esistenti? Deve avere lo stesso valore e il nome-chiave dell'altro.

Ciò è su SQL Server 2008.

alt text http://i39.tinypic.com/mhwnds.png

+0

penso "SQL Server 10" è probabilmente meglio conosciuto come "SQL Server 2008" – Andomar

risposta

7

Quando si crea la chiave simmetrica, in primo luogo, assicurarsi che si sta utilizzando il KEY_SOURCE, IDENTITY_VALUE e l'algoritmo parametri.

Se non l'hai già, creare la chiave master del database e il certificato per proteggere la chiave simmetrica.

-- Create Database Master Key 
CREATE MASTER KEY ENCRYPTION BY 
PASSWORD = 'Your Database Master Key Password here' 
GO 

-- Create Encryption Certificate 
CREATE CERTIFICATE MyCertificateName 
WITH SUBJECT = 'Your Certificate Description Here' 
GO 

-- Create Symmetric Key 
CREATE SYMMETRIC KEY MyKeyName WITH 
IDENTITY_VALUE = 'Enter a key description', 
ALGORITHM = AES_256, 
KEY_SOURCE = 'Enter a key phrase here (keep very secret)' 
ENCRYPTION BY CERTIFICATE MyCertificateName; 
  • Il parametro IDENTITY_VALUE viene usato per creare il GUID nella tabella sys.symmetric_keys, che deve essere la stessa in entrambi i database per lavorare.

  • Il parametro KEY_SOURCE viene utilizzato per creare la chiave vera e propria, quindi assicurarsi che sia esattamente la stessa e ben protetta.

  • L'algoritmo è naturalmente quale server SQL utilizza un algoritmo per crittografare e decrittografare i dati, che deve essere lo stesso a lavorare.

Si dovrebbe essere in grado di eseguire lo script precedente su entrambi i database (sostituito con i propri valori, ovviamente) e sarà decodificare con successo i dati crittografati in un altro database.

Se la chiave esistente non è stata creata in questo modo, sarà necessario decrittografare tutto con la vecchia chiave e ricodificarla di nuovo con quella nuova.

Un paio di buone fonti di creazione della chiave può essere trovato qui:

Problemi correlati