Simptomi
Pretpostavimo da redovno uključujete i isključujete šifrovanje u bazi podataka i da redovno menjate ključeve za šifrovanje u bazi podataka u sistemu SQL Server 2012. U ovom slučaju, baza podataka možda neće biti šifrovana kada uključite šifrovanje. Ako promenite ključeve za šifrovanje, može doći do tvrdnje.
Uzrok
Do ovog problema dolazi zato što, ako ključ za šifrovanje baze podataka (DEK) nije u šifrovanom stanju i ključ je promenjen, sledeća ispravka ključa kopira ključni deo DEK-a, ali ne kopira ispravno stanje šifrovanja. U sistemu SQL Server 2012, nakon skeniranja dešifrovanja, dek u zaglavlju kontrolnog bloka datoteka (FCB) se čuva, a DEK se uklanja samo kada se ključ odbaci. Kada je šifrovanje isključeno, dođe do promene ključa, a zatim pokušate da uključite šifrovanje, dinamički prikaz upravljanja (DMV) prikazuje da je šifrovanje dovršeno. Međutim, skeniranje šifrovanja se ne izvršava i stranice se ne šifruju.
Rešenje
Kumulativne informacije o ažuriranju
SQL Server 2012
Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 1. Za više informacija o nabavljanju ovog paketa kumulativnih ispravki za SQL Server 2012 kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2679368 Kumulativni paket ispravki 1 za SQL Server 2012Napomena Pošto su verzije kumulativne, svako novo izdanje ispravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje ispravki za SQL Server 2012. Preporučujemo da razmislite o primeni najnovijeg izdanja ispravke koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2692828 SQL Server 2012 builds koji su objavljeni nakon što je SQL Server 2012 objavljen
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".
Rešenje
Da biste otklonjeli ovaj problem, otpustite ključ za šifrovanje svaki put kada isključite šifrovanje u bazi podataka.
Više informacija
Informacije o nizu poziva
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