Я использую продукт, который работает на SQLServer 2008. Понятно, что компания, поставляющая его, не предлагает поддержку SQLServer. Когда я установил продукт, я указал пароль для шифрования базы данных. Я хотел бы запустить еще одну копию продукта для тестирования на другом сервере. Я восстановил базу данных на другом сервере и установил продукт на этом другом сервере. Когда я установил его, я ввел тот же пароль, а затем восстановил резервную копию с основного сервера. Однако я получаю сообщение об ошибке:
System.Data.SqlClient.SqlException: An error occurred during decryption.
из продукта. Я могу получить доступ к таблицам с помощью SQLServer Management studio.
Я пробовал это:
на первом сервере:
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'
)
на втором сервере:
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'
)
Я также попробовал это на втором сервере:
alter MASTER KEY regenerate with enCRYPTION BY PASSWORD='password'
но это дало сообщение об ошибке асимметричного ключа.
Как я могу восстановить резервную копию с первого сервера на второй сервер?
Обновить:
В базе данных также есть асимметричный и симметричный ключ. Если я открываю симметричный ключ с помощью асимметричного ключа, я получаю ту же ошибку, поэтому я думаю, что именно поэтому она не работает - почему-то ключи не передаются таким образом, что их можно использовать.
источник