Ознаки
Розглянемо такий сценарій:
-
У вас є база даних, яка містить ізоляцію знімка або прочитано відповідний рівень ізоляції знімка, увімкнуто в Microsoft SQL Server 2012 або SQL Server 2014.
-
База даних містить непусту таблицю з кластерним індексами з кількома стовпцями. Головний ключ кластерного індексу має значення Not Null.
-
Ви починаєте транзакцію та додаєте стовпець до таблиці. Значення цього стовпця оновлено.
-
Ви змінюєте головний ключ кластерного індексу, щоб дозволити NULL-значення.
-
Ви вставляєте рядки з NULL-значеннями для інтерліньяжу ключа кластерного індексу, а потім перервати транзакцію.
У цьому сценарії відкочування призводить до того, що база даних має бути підозрілим і лише "repairable" з командою DBCC checkdb REPAIR_ALLOW_DATA_LOSS . Крім того, може з'явитися таке повідомлення про помилку:
MSG 3316, рівень 21, стан 2, рядок 135 під час скасування операції, що записується в базі даних "%. * ls", сталася помилка під час входу в код запису%% S_LSN. Рядок не знайдено. Відновлення бази даних із повного резервного копіювання або відновлення бази даних.
Спосіб вирішення
Відомості про пакет оновлень для SQL Server 2014
Щоб вирішити цю проблему, отримайте пакет оновлень 1 для SQL Server 2014.
Докладні відомості про SQL Server 2014 Service Pack 1 (SP1) наведено в статті помилки, які зафіксовано в SQL Server 2014 Service Pack 1.
Відомості про пакет оновлень для SQL Server 2012
Щоб вирішити цю проблему, отримайте найновіший пакет оновлень для Microsoft SQL Server 2012. Щоб отримати докладні відомості, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2755533 Отримання найновішого пакета оновлень для SQL Server 2012
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".