תופעות
נניח שאתה מפעיל באופן קבוע הפעלה וכיבוי של הצפנה במסד נתונים וגם משנה באופן קבוע את מפתחות ההצפנה במסד הנתונים ב-SQL Server 2012. בתרחיש זה, ייתכן שמסד הנתונים לא יוצפן בעת הפעלת הצפנה. אם תשנה את מפתחות ההצפנה, הקביעה עשויה להתרחש.
סיבה
בעיה זו מתרחשת מכיוון שאם מפתח הצפנת מסד נתונים (DEK) אינו מופיע במצב מוצפן והמפתח משתנה, העדכון הבא של המפתח מעתיק את חלק המפתח של DEK, אך אינו מעתיק את ההגדרה של מצב ההצפנה כראוי. ב-SQL Server 2012, לאחר סריקת פענוח, נשמרים הDEK בכותרת העליונה של בלוק הקובץ (FCB), והDEK מוסר רק כאשר המפתח מושמט. כאשר הצפנה מבוטלת, קיים שינוי מפתח ולאחר מכן אתה מנסה להפעיל את ההצפנה, תצוגת הניהול הדינאמי (רישוי) מראה שהצפנת הצפנה זו הושלמה. עם זאת, סריקת ההצפנה אינה מתבצעת והעמודים נותרים לא מוצפנים.
פתרון
מידע אודות עדכון מצטבר
SQL Server 2012
התיקון לבעיה זו הופץ לראשונה בעדכון המצטבר 1. לקבלת מידע נוסף אודות אופן ההשגה של חבילת עדכון מצטברת זו עבור SQL Server 2012, לחץ על מספר המאמר הבא כדי להציג את המאמר ב-Microsoft Knowledge Base:
2679368 חבילת עדכון מצטבר 1 עבור SQL Server 2012הערה מאחר שבונה הגירסאות מצטבר, כל מהדורת תיקון חדשה מכילה את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו במהדורת התיקון הקודמת של SQL Server 2012. אנו ממליצים לשקול להחיל את הגירסה העדכנית ביותר שמכילה את התיקון האחרון שמכיל תיקון חם זה. לקבלת מידע נוסף, לחץ על מספר המאמר הבא כדי להציג את המאמר ב-Microsoft Knowledge Base:
2692828 SQL Server 2012 בונה שהופצו לאחר ש-SQL Server 2012 הופץ
מצב
Microsoft אישרה שזוהי בעיה במוצרי Microsoft המופיעים בסעיף "חל על".
פתרון
כדי לעקוף בעיה זו, שחרר את מפתח ההצפנה בכל פעם שתבטל את ההצפנה במסד נתונים.
מידע נוסף
מידע אודות מחסנית שיחות
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