Symptomen
Stel dat u regelmatig de optie versleuteling in-en uitschakelen voor een database en de versleutelingssleutels van de database in SQL Server 2012 regelmatig wijzigt. In dit scenario wordt de database mogelijk niet versleuteld wanneer u de versleuteling inschakelt. Als u de versleutelingssleutels wijzigt, kan dit een bevestiging voordoen.
Oorzaak
Dit probleem doet zich voor omdat een databaseversleutelingssleutel (DEK) niet wordt versleuteld en de sleutel wordt gewijzigd, maar de volgende update van de sleutel kopieert het sleutel gedeelte van de DEK, maar de volgende update van de sleutel kopieert de instelling de versleutelingsstatus niet goed. In SQL Server 2012, na een decoderings scan, wordt de DEK in de header van het bestandsbesturingsblok (FCB) bewaard en wordt de DEK alleen verwijderd wanneer de sleutel wordt neergezet. Wanneer versleuteling is uitgeschakeld, wordt er een belangrijke wijziging aangebracht en wordt u geprobeerd om de versleuteling in te schakelen, kunt u met de dynamische beheerweergave (DMV) de versleuteling voltooien. De versleutelingsscan wordt echter niet uitgevoerd en de pagina's zijn nog niet versleuteld.
Oplossing
Cumulatieve updategegevens
SQL Server 2012
De oplossing voor dit probleem werd voor het eerst uitgebracht in de cumulatieve update 1. Als u meer informatie wilt over het verkrijgen van dit cumulatieve updatepakket voor SQL Server 2012, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:
2679368 Cumulatief update pakket 1 voor SQL Server 2012Opmerking Aangezien de builds cumulatief zijn, bevat elke nieuwe correctie release alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige versie van SQL Server 2012 fix. U wordt aangeraden om de meest recente correctie voor deze hotfix toe te passen. Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
2692828 De versies van SQL Server 2012 die zijn uitgebracht na de release van SQL Server 2012
Status
Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.
Workaround
U kunt dit probleem omzeilen door de versleutelingssleutel uit te schakelen telkens wanneer u de versleuteling voor een database uitschakelt.
Meer informatie
Stack informatie oproepen
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