Sümptomid
Oletagem, et lülitate andmebaasist regulaarselt sisse ja välja ning muudate ka regulaarselt SQL Server 2012 andmebaasi krüptimise võtmeid. Selle stsenaariumi korral ei pruugi andmebaas olla krüptitud, kui lülitate krüptimise sisse. Kui muudate krüptimise võtmeid, võib esineda kinnitus.
Põhjus
See probleem ilmneb seetõttu, et kui andmebaasi krüptovõti (DEK) pole krüptitud olekus ja võtit muudetakse, kopeeritakse võtme järgmine värskendus DEK olulise osa, kuid see ei kopeeri krüptimise oleku õigesti häälestamist. SQL Server 2012 pärast dekrüptimist skannimist säilitatakse DEK failis Control Block (FCB) päises ja DEK eemaldatakse ainult siis, kui võti on ära langenud. Kui krüptimine on välja lülitatud, siis on oluline muudatus ja seejärel proovite krüptimist sisse lülitada, kuvatakse dünaamilise halduse vaates (DMV), et krüptimine on lõpule viidud. Krüptimise skannimine pole siiski läbi viidud ja lehed pole krüptitud.
Lahendus
Kumulatiivse värskenduse teave
SQL Server 2012
Selle probleemi parandus anti esmakordselt välja kumulatiivne Update 1. Lisateavet selle kumulatiivse värskenduspaketi SQL Server 2012 hankimiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
2679368 Kumulatiivne värskenduspakett 1 SQL Server 2012Märkus. Kuna järgud on kumulatiivsed, sisaldab iga uus parandus kõiki Kiirparandusi ja kõiki turvaparandusi, mis kuulusid eelmise SQL Serveri 2012 Fix väljalaskega. Soovitame teil kaaluda kõige uuemate paranduste rakendamist, mis sisaldavad seda käigultparandust. Lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
2692828 Pärast SQL Server 2012 väljaandmist väljaantud SQL Serveri 2012 järgud
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.
Lahendus
Selle probleemi lahendamiseks kukutage krüptovõti iga kord, kui lülitate andmebaasist välja krüptimise.
Lisateave
Helista pinu teabele
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