2011-06-16 19 views
9

Devo eseguire una copia locale di un database SQL Server remoto. L'ho fatto utilizzando Attività> Backup da Management Studio. Ho quindi ripristinato localmente il backup, che sembra avere tutto: tabelle, utenti, chiave simmetrica e certificato.Ripristino del database SQL Server - Chiave principale non in apertura

Quando si tenta di eseguire una selezione che mi richiede di aprire la chiave simmetrica e decrittografare dal certificato, ottengo questo errore:

Please create a master key in the database or open the master key in the session before performing this operation. 

Perché mi viene chiesto per questo, e perché non lo fa si apre automaticamente come fa sul server remoto?

Ho provato a cambiare la chiave principale, ma senza la password originale, non posso fare molto.

+0

Hmm, spero che non è facile per ripristinare una chiave master senza la password, è lì che la sicurezza di tutto proviene.Immagino che questa potrebbe essere una lezione sull'uso della crittografia a chiave pubblica per proteggere la tua chiave master, e fare il backup del certificato in un posto sicuro. –

+1

@Petey forse mi manca qualcosa di ovvio qui; sulla macchina originale, non è necessario aprire la chiave, è sufficiente eseguire la stored procedure. C'è qualche difetto nella mia esportazione/importazione? – ashes999

+0

Il modo più semplice per risolverlo è eseguire il backup della chiave master del database e assegnargli una password per proteggere il file. Quindi ripristinare la chiave master del database utilizzando la password per il database ripristinato. Ciò funzionerà senza che tu debba conoscere la password originale utilizzata per creare il DMK a condizione che il DMK venga crittografato anche da SMK sul tuo sistema di produzione, che è per impostazione predefinita a meno che la crittografia per chiave non venga rilasciata. –

risposta

6

il problema è la SMK è cambiato (dato che la macchina è cambiato). C'è un articolo che lo spiega here. Esportare e importare SMK semplicemente tenendo presente che qualsiasi dato crittografato nel sistema copiato in è illeggibile.

articoli MSDN:

0

Non è possibile ignorare la crittografia. Vedere questo link per la parola ufficiale di Microsoft.

+0

Non sto cercando di bypassare. Sto cercando di replicare e ora non posso più decrittografare i dati sulla nuova macchina. Ho modificato la mia domanda per renderla più chiara. – ashes999

2

Ecco un buon articolo in particolare sulla migrazione di un database che include la crittografia:

http://www.sql-server-performance.com/2009/migrating-databases-checklist-part3/3/

Ma insomma, è necessario conoscere la password originale per spostarlo.

È possibile eseguire il backup e ripristinare la chiave (cioè replicare come si parla), ma è necessario accedere al server remoto, possibilità di creare backup o copia di backup con password originale:

http://msdn.microsoft.com/en-us/library/ff848768.aspx

Questa conversazione forum può anche rivelarsi utile per la comprensione:

http://www.sqlservercentral.com/Forums/Topic775644-146-1.aspx

+0

+1 Collegamenti utili, ma non risolvono il mio problema. – ashes999

1

Same problem solved without data loss - if you have the password creating the master key

La chiave master nel database crittografato con chiave master del servizio. Si è aperto automaticamente quando hai usato la chiave principale.

Ora la chiave master del servizio non è in grado di aprire la chiave master e SQL richiede di "aprire manualmente la chiave DECRYPTION BY PASSWORD = 'password'" o di creare la chiave master.

L'aggiunta della crittografia tramite la chiave master di servizio del NUOVO SERVER consentirà di nuovo l'apertura automatica della chiave master.

Complimenti ai ragazzi che hanno risposto alla domanda nel link

Problemi correlati