Belirtiler
Bir veritabanında düzenli olarak şifrelemeyi açıp kapatmanızı ve ayrıca SQL Server 2012 ' da veritabanında şifreleme anahtarlarını değiştirkullandığınızı varsayalım. Bu senaryoda, şifrelemeyi açtığınızda veritabanı şifrelenmeyebilir. Şifreleme anahtarlarını değiştirirseniz, bir onaylama işlemi gerçekleştirilebilir.
Neden
Bu sorun, bir veritabanı şifreleme anahtarı (DEK) şifreli bir durumda olmadığında ve anahtar değiştirilmesinden kaynaklanır, bu durumda anahtarın bir sonraki güncelleştirmesi DEK de anahtar kısmı kopyalanır, ancak anahtarı şifreleme durumunu doğru bir şekilde kopyalamaz. SQL Server 2012 ' te, şifre çözme taramasının ardından, dosya denetim bloğu (FCB) üstbilgisindeki DEK bu, Şifreleme kapatıldığında, bir anahtar değişikliği olur ve şifrelemeyi açmaya çalışırsanız, dinamik yönetim görünümü (DMV) şifrelemenin tamamlandığını gösterir. Ancak, şifreleme taraması yapılmaz ve sayfalar şifrelenmez.
Çözüm
Toplu güncelleştirme bilgileri
SQL Server 2012
Bu sorunla ilgili düzeltme ilk olarak 1 toplu güncelleştirme ile yayımlanmıştır. SQL Server 2012 için bu toplu güncelleştirme paketini edinme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası 'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
2679368 SQL Server 2012 için toplu güncelleştirme paketi 1Not Derlemeler birikimli olduğundan, her yeni düzeltme sürümü önceki SQL Server 2012 düzeltmesi sürümüyle birlikte gelen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. Bu düzeltmeyi içeren en son düzeltme sürümünü uygulamayı düşünebilirsiniz. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
2692828 SQL Server 2012 sonrasında yayınlanan SQL Server 2012 derlemeleri
Durum
Microsoft bu sorunun "Uygulandığı öğe" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Geçici Çözüm
Bu sorunu geçici olarak çözmek için, bir veritabanında şifrelemeyi her açışınızda şifreleme anahtarını bırakın.
Ek Bilgi
Çağrı yığını bilgileri
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