Я використовую продукт, який працює на SQLServer 2008. Зрозуміло, що компанія, що постачає його, не пропонує підтримки SQLServer. Коли я встановив продукт, я вказав пароль для шифрування бази даних. Я хотів би запустити ще одну копію продукту для тестування на іншому сервері. Я відновив базу даних на іншому сервері та встановив продукт на цьому іншому сервері. Коли я встановив його, я подав той же пароль, а потім відновив резервну копію з основного сервера. Однак я отримую повідомлення про помилку:
System.Data.SqlClient.SqlException: An error occurred during decryption.
від продукту. Я можу отримати доступ до таблиць за допомогою студії SQLServer Management.
Я спробував це:
на першому сервері:
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'
але це дало повідомлення про помилку щодо асиметричного ключа.
Як я можу відновити резервну копію з першого сервера на другий сервер?
Оновлення:
У базі даних є також асиметричний і симетричний ключ. Якщо я відкриваю симетричний ключ за допомогою асиметричного ключа, я отримую ту ж помилку, тому я думаю, що саме тому він не працює - якось ключі не передаються таким чином, щоб їх можна було використовувати.