Gejala
Misalnya Anda secara teratur mengaktifkan dan menonaktifkan enkripsi pada database dan secara teratur mengubah kunci enkripsi pada database di SQL Server 2012. Dalam skenario ini, database mungkin tidak dienkripsi saat Anda mengaktifkan enkripsi. Jika Anda mengubah kunci enkripsi, sebuah pernyataan mungkin terjadi.
Penyebab
Masalah ini terjadi karena, jika kunci enkripsi database (DEK) tidak berada dalam status terenkripsi dan kunci berubah, maka pembaruan berikutnya dari kunci akan menyalin bagian dari DEK, tetapi tidak menyalin status pengaturan enkripsi dengan benar. Di SQL Server 2012, setelah pemindaian dekripsi, DEK di header kontrol file (FCB) dibiarkan disimpan, dan DEK dihapus hanya ketika tombol dijatuhkan. Saat enkripsi dinonaktifkan, ada perubahan kunci, lalu Anda mencoba mengaktifkan enkripsi, tampilan manajemen dinamis (DMV) memperlihatkan bahwa enkripsi telah selesai. Namun, pemindaian enkripsi tidak dijalankan dan halaman dibiarkan tidak dienkripsi.
Pemecahan Masalah
Informasi pembaruan kumulatif
SQL Server 2012
Perbaikan untuk masalah ini pertama kali dirilis dalam pembaruan kumulatif 1. Untuk informasi selengkapnya tentang cara mendapatkan paket pembaruan kumulatif ini untuk SQL Server 2012, klik nomor artikel berikut ini untuk menampilkan artikel di Basis Pengetahuan Microsoft:
2679368 Paket pembaruan kumulatif 1 untuk SQL Server 2012Catatan Karena Build bersifat kumulatif, setiap rilis perbaikan baru berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan rilis perbaikan SQL Server 2012 sebelumnya. Kami menyarankan agar Anda mempertimbangkan untuk menerapkan rilis perbaikan terbaru yang berisi hotfix ini. Untuk informasi selengkapnya, klik nomor artikel berikut untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
2692828 Build 2012 SQL Server yang dirilis setelah SQL Server 2012 dirilis
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".
Penyelesaian Masalah
Untuk mengatasi masalah ini, Jatuhkan kunci enkripsi setiap kali Anda menonaktifkan enkripsi di database.
Informasi Selengkapnya
Informasi tumpukan panggilan
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