Исправление: Нельзя восстановить резервную копию базы данных на другой экземпляр SQL Server при отключении прозрачное шифрование данных перед созданием резервной копии в SQL Server 2008 или SQL Server 2008 R2

Применимо к: SQL Server 2008 Service Pack 2SQL Server 2008 R2

Корпорация Майкрософт распространяет Microsoft SQL Server 2008 и исправления Microsoft SQL Server 2008 R2 в виде одного загружаемого файла. Так как исправления являются накопительными, каждый выпуск содержит все исправления и все исправления, входившие в состав предыдущих SQL Server 2008 или SQL Server 2008 R2 исправления выпуска.

Проблемы


Рассмотрим следующий сценарий.
  • Прозрачное шифрование данных используется в базе данных в SQL Server 2008 или в Microsoft SQL Server 2008 R2.
  • Можно отключить шифрование базы данных.
  • Архивация базы данных сразу после отключения шифрования.
  • При попытке с помощью резервной копии восстановить базу данных на другом экземпляре SQL Server.
В этом случае происходит сбой операции восстановления, и появляется сообщение об ошибке, подобное приведенному ниже:
System.Data.SqlClient.SqlError: Файл «< имя_базы_данных > _log» не удается правильно инициализировать. Проверьте журналы ошибок для получения дополнительных сведений. (Microsoft.SqlServer.Smo)
Тем не менее журнал ошибок содержит подробности отсутствуют. При удалении ключа шифрования базы данных прежде чем создать резервную копию базы данных, появляется следующее сообщение об ошибке при попытке восстановить базу данных:
System.Data.SqlClient.SqlError: Не удается найти сертификат с отпечатком "0xCB62FF76463A6BF86E8F769B541BA6483AFC2FF2». (Microsoft.SqlServer.Smo)

Решение


Сведения о накопительном пакете обновления

Пакет обновления 1 для SQL Server 2008

Исправление этой уязвимости первого выпуска накопительного обновления 10 для SQL Server 2008 Пакет обновления 1. Дополнительные сведения о этот накопительный пакет обновления щелкните следующий номер статьи базы знаний Майкрософт:
2279604 Накопительный пакет обновления 10 для SQL Server 2008 Пакет обновления 1
Примечание. Поскольку построения являются накопительными, каждый новый выпуск исправление содержит все исправления и все исправления, входившие в состав предыдущих SQL Server 2008 выпуска исправлений. Корпорация Майкрософт рекомендует учесть применение последний выпуск исправления, содержащего это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
970365 SQL Server 2008 выполняет построение, выпущенных после выпуска SQL Server 2008 Пакет обновления 1
Исправления Microsoft SQL Server 2008 создаются для определенных пакетов обновления SQL Server. Необходимо установить исправление SQL Server 2008 Пакет обновления 1 для установки SQL Server 2008 Пакет обновления 1. По умолчанию какие-либо исправления, включенный в пакет обновления SQL Server включено в следующий пакет обновления SQL Server.

Пакет обновления 2 для SQL Server 2008

Исправление этой уязвимости первого выпуска накопительного обновления 1 для SQL Server 2008 Пакет обновления 2. Дополнительные сведения о этот накопительный пакет обновления щелкните следующий номер статьи базы знаний Майкрософт:
2289254 Накопительное обновление 1 для SQL Server 2008 Пакет обновления 2
Примечание. Поскольку построения являются накопительными, каждый новый выпуск исправление содержит все исправления и все исправления, входившие в состав предыдущих SQL Server 2008 выпуска исправлений. Мы рекомендуем рассмотреть применение последнего выпуска исправления, содержащего это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
2402659 SQL Server 2008 выполняет построение, выпущенных после выпуска SQL Server 2008 Пакет обновления 2

SQL Server 2008 R2

Исправление, устраняющее эту проблему, сначала было выпущено в накопительное обновление 4. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2 щелкните следующий номер статьи базы знаний Майкрософт:
2345451 Накопительное обновление 4 для SQL Server 2008 R2
Примечание. Поскольку сборки являются накопительными, каждый новый выпуск исправлений содержит все исправления, входившие в состав предыдущих выпусков исправлений SQL Server 2008 R2 . Мы рекомендуем рассмотреть применение последнего выпуска исправления, содержащего это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
981356 Сборки SQL Server 2008 R2, которые были выпущены после выпуска SQL Server 2008 R2

Статус


Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".

Действия по воспроизведению проблемы

  1. Создайте главный ключ. Ниже приведен пример кода, который создает главный ключ.
    use masterCreate Master Key encryption by password = 'Password01!';go
  2. Создайте или получите сертификат защищен главным ключом. Ниже приведен пример кода, который создает сертификат защищен главным ключом.
    create certificate cert_testDB_encryptDEK  authorization dbowith subject='Certificate to encrypt the DEK of testDB'
  3. Создать новую базу данных, создать ключ шифрования базы данных и затем защиты ключа с помощью сертификата. Ниже приведен пример кода, который создает новую базу данных, которая создает ключ шифрования базы данных, и затем, защищающий ключ с помощью сертификата:
    create Database testDBuse testDBCreate database encryption key with algorithm=AES_128encryption by server certificate cert_testDB_encryptDEK  
  4. Задание базы данных на использование шифрования. Ниже приведен пример кода, который устанавливает шифрование базы данных.
    Alter database testDB set encryption on 
  5. Отключите шифрование базы данных. Ниже приведен пример кода, который отключает шифрование базы данных.
    Alter database testDB set encryption off 
  6. Создать резервную копию базы данных, а затем восстановите резервную копию на другой версии SQL Server.

Ссылки


Дополнительные сведения о прозрачного шифрования данных (TDE) посетите следующий веб-узел Microsoft Developer Network (MSDN):Дополнительные сведения о добавочных модель обслуживания для SQL Server щелкните следующий номер статьи базы знаний Майкрософт:
935897 Модель обслуживания изменений, используемая рабочей группой SQL Server, предоставляет модель ISM для распространения исправлений обнаруженных проблем
Дополнительные сведения о схеме именования для обновления SQL Server щелкните следующий номер статьи базы знаний Майкрософт:
822499Новая схема присвоения имен пакетам обновлений программного обеспечения Microsoft SQL Server
Для получения дополнительных сведений о терминологии обновлений программного обеспечения щелкните следующий номер статьи базы знаний Майкрософт:
824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт