SQL Server 2008 Открывает ошибку Master Key на физический сервер, переключается

Я скопировал базу данных SQL Server от одной системы до следующей, идентичной установки, но совершенно другую реальную машину. Я использовал Фантом Norton и восстановил файлы вручную, например, вся папка SQL Server 2008, найденная в c:\Program Files после переустановки Экспресса SQL Server 2008 года.

Одна из моих баз данных имеет шифрование AES_256, включенное в ряде одной из его таблиц, столбцов. Я повторно устанавливаю свой IIS7 и попробованный для запущения приложения, которые получают доступ к базе данных после получения данных, я получаю эту ошибку:

Ошибка сервера в '/' Приложение. Создайте главный ключ в базе данных или откройте главный ключ на сессии прежде, чем выполнить эту операцию. Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Рассмотрите отслеживание стека для получения дополнительной информации об ошибке и где это произошло в коде.

Детали исключения: Система. Данные. SqlClient. SqlException: создайте главный ключ в базе данных или откройте главный ключ на сессии прежде, чем выполнить эту операцию.

Исходная ошибка:

Необработанное исключение было сгенерировано во время выполнения текущего веб-запроса. Информация относительно источника и местоположения исключения может быть определена с помощью отслеживания стека исключительной ситуации ниже.

Я сделал некоторое чтение и нашел некоторые ссылки о том, как Шифрование AES связано с ключом машины, но в замешательстве относительно того, как скопировать его в новую систему. Или возможно это даже не имеет место.

Примечание: Я попытался отбросить симметричный ключ, сертификат и главный ключ и воссоздать их. Это избавляется от ошибки, но, чем данные, которые в зашифрованном через AES_256 не обнаруживаются. Столбцы, которые НЕ шифруются, делают, как бы то ни было.

Любая справка очень ценилась бы. Заранее спасибо!

24
задан marc_s 7 January 2010 в 06:08
поделиться

1 ответ

Главный ключ базы данных шифруется с помощью главного ключа сервера, который является специфическим для машины, на которой установлен SQL Server. Когда вы перемещаете базу данных на другой сервер, вы теряете возможность автоматически расшифровывать и открывать мастер-ключ базы данных, потому что локальный ключ сервера, скорее всего, будет отличаться. Если вы не можете расшифровать мастер ключ базы данных, вы не можете расшифровать ничего, что зависит от него (сертификаты, симметричные ключи и т.д.).

В принципе, вы хотите заново расшифровать мастер ключ базы данных против нового ключа сервера, что можно сделать с помощью этого сценария (используя привилегии администратора):

-- Reset database master key for server (if database was restored from backups on another server)
OPEN MASTER KEY DECRYPTION BY PASSWORD = '---your database master key password---'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
GO

Обратите внимание, что когда вы создаете мастер ключ базы данных, вы всегда должны предоставить и пароль, чтобы вы могли открыть ключ, используя пароль в сценарии, где мастер ключ службы не может быть использован - надеюсь, у вас где-то хранится этот пароль!

В качестве альтернативы вы можете восстановить резервную копию мастер ключа базы данных - но вам нужен ключ, который был создан для целевого сервера, а не для сервера-источника.

Если у вас нет ни резервной копии, ни пароля, то я не уверен, что вы сможете восстановить зашифрованные данные на новом сервере, так как вам придется сбросить и заново создать мастер-ключ базы данных с новым паролем, который убьет все зависимые ключи и данные.

69
ответ дан 28 November 2019 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: