Simptome
Să presupunem că activați și dezactivați în mod regulat criptarea într-o bază de date și modificați în mod regulat cheile de criptare din baza de date în SQL Server 2012. În acest scenariu, este posibil ca baza de date să nu fie criptată atunci când activați criptarea. Dacă modificați cheile de criptare, poate apărea o afirmație.
Cauză
Această problemă apare deoarece, dacă o cheie de criptare a bazei de date (,) nu se află într-o stare criptată, iar cheia este modificată, următoarea actualizare a cheii copiază partea cheie a acestuia, dar nu copiază corect setarea stării de criptare. În SQL Server 2012, după o scanare de decriptare, s-a păstrat în antetul de control al fișierelor (FCB), iar este eliminat numai atunci când cheia este retrasă. Atunci când criptarea este dezactivată, există o modificare de cheie, apoi încercați să activați criptarea, vizualizarea Dynamic Management (DMV) afișează faptul că criptarea s-a finalizat. Cu toate acestea, scanarea de criptare nu se efectuează și paginile nu sunt criptate.
Rezolvare
Informații despre actualizarea cumulativă
SQL Server 2012
Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 1. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2012, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
2679368 Pachetul de actualizare cumulativă 1 pentru SQL Server 2012Notă Deoarece compilările sunt cumulative, fiecare nouă versiune de remediere conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu versiunea anterioară SQL Server 2012 fix release. Vă recomandăm să luați în considerare aplicarea celei mai recente versiuni de remediere care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:
2692828 SQL Server 2012 construiește care au fost lansate după ce s-a lansat SQL Server 2012
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.
Soluție de evitare
Pentru a rezolva această problemă, fixați cheia de criptare de fiecare dată când dezactivați criptarea într-o bază de date.
Mai multe informații
Informații despre stiva de apeluri
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