Estoy usando un producto que se ejecuta en SQLServer 2008. Es comprensible que la compañía que lo suministra no ofrezca soporte para SQLServer. Cuando instalé el producto, especifiqué una contraseña para cifrar la base de datos. Me gustaría ejecutar otra copia del producto para probar en otro servidor. He restaurado la base de datos a otro servidor e instalado el producto en ese otro servidor. Cuando lo instalé, proporcioné la misma contraseña y luego restauré una copia de seguridad del servidor principal. Sin embargo, recibo el mensaje de error:
System.Data.SqlClient.SqlException: An error occurred during decryption.
del producto Puedo acceder a las tablas usando el estudio SQLServer Management.
He intentado esto:
en el primer servidor:
CREATE CERTIFICATE cert1 WITH SUBJECT = 'Certificate for my stuff'
BACKUP CERTIFICATE cert1 TO FILE = 'd:\backup\cert1.dat'
WITH PRIVATE KEY
(
ENCRYPTION BY PASSWORD = 'mypassword',
FILE = 'd:\backup\cert1_privatekey.dat'
)
en el segundo servidor:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mypassword'
CREATE CERTIFICATE cert1 FROM FILE = 'd:\cert1.dat'
WITH PRIVATE KEY
(
FILE = 'd:\cert1_privatekey.dat',
DECRYPTION BY PASSWORD = 'mypassword'
)
También probé esto en el segundo servidor:
alter MASTER KEY regenerate with enCRYPTION BY PASSWORD='password'
pero eso dio un mensaje de error sobre una clave asimétrica.
¿Cómo puedo restaurar la copia de seguridad del primer servidor en el segundo servidor?
Actualizar:
También hay una clave asimétrica y simétrica en la base de datos. Si abro la clave simétrica usando la clave asimétrica, obtengo el mismo error, así que creo que es por eso que no funciona: de alguna manera, las claves no se transfieren de tal manera que puedan usarse.
fuente