Applies ToSQL Server 2012 Enterprise Core SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web

Проблемы

Предположим, что вы регулярно включаете и выключаете шифрование в базе данных, а также регулярно изменяете ключи шифрования в базе данных SQL Server 2012. В этом случае база данных может не шифроваться при включении шифрования. Если вы измените ключи шифрования, может возникнуть утверждение.

Причина

Эта проблема возникает из-за того, что если ключ шифрования базы данных (DEK) не находится в зашифрованном состоянии, а ключ изменился, то при следующем обновлении ключа копируется ключевая часть DEK, но параметр ENCRYPTION State не копируется должным образом. В SQL Server 2012 после проверки расшифровки DEK в заголовке управляющего блока файлов (FCB) и DEK удаляются только при удалении ключа.  При выключенном параметре "шифрование" есть ключевое изменение, а затем вы пытаетесь включить шифрование, так как динамическое административное представление (DMV) показывает, что шифрование завершено. Однако проверка шифрования не выполняется, а страницы остались незашифрованными.

Решение

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

SQL Server 2012

Исправление для этой проблемы впервые выпущено в накопительном обновлении 1. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2012, щелкните следующий номер статьи базы знаний Майкрософт:

2679368 Накопительный пакет обновления 1 (SP1) для SQL Server 2012Примечание. Так как сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2012. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

2692828 Сборки SQL Server 2012, выпущенные после выпуска SQL Server 2012

Статус

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

Обходное решение

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

Дополнительная информация

Сведения о стеке вызовов

FCB::InitializeReencryptionScan ntdbms\storeng\dfs\manager\fcb.cpp 8407FCB::ReencryptFile ntdbms\storeng\dfs\manager\fcb.cpp 8934AsynchronousDiskAction::DoReencryptFile ntdbms\storeng\dfs\manager\asyncdp.cpp 810AsynchronousDiskAction::ExecuteDeferredAction ntdbms\storeng\dfs\manager\asyncdp.cpp 1203AsynchronousDiskPool::ProcessActions ntdbms\storeng\dfs\manager\asyncdp.cpp 2252AsynchronousDiskWorker::ThreadRoutine ntdbms\storeng\dfs\manager\asyncdp.cpp 3120SubprocEntrypoint ntdbms\storeng\dfs\process\subproc.cpp 444SOS_Task::Param::Execute e:\sql11_main_t\sql\common\dk\sos\include\sos.inl 8564SOS_Scheduler::RunTask e:\sql11_main_t\sql\common\dk\sos\src\scheduler.cpp 976SOS_Scheduler::ProcessTasks e:\sql11_main_t\sql\common\dk\sos\src\scheduler.cpp 852SchedulerManager::WorkerEntryPoint e:\sql11_main_t\sql\common\dk\sos\src\node.cpp 1809SystemThread::RunWorker e:\sql11_main_t\sql\common\dk\sos\include\worker.inl 823SystemThreadDispatcher::ProcessWorker e:\sql11_main_t\sql\common\dk\sos\src\node.cpp 449Assert in FCB::InitializeReencryptionScan in file fcb.cpp @ 8407Expression: a_dbDEK->GetDbeState () == CSECDEK::x_dbe_DecryptionInProgress || a_dbDEK->GetDbeState () == CSECDEK::x_dbe_EncryptionInProgress 

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.