Проблемы
Вы можете изменить тип данных столбца в таблице базы данных с ntext на nvarchar (max) на сервере, на котором запущены Microsoft SQL Server 2012, 2014 или 2016. При обновлении таблицы путем добавления более 4 000 записей инструкция DBCC CHECKDB может сообщать об ошибках, которые похожи на указанные ниже.
Сообщение 8961, уровень 16, состояние 1, Номер_строки Ошибка в таблице: ObjectID, indexID, PartitionID, allocUnitID (тип данных LOB). Узел данных за пределами строки на странице (PageID), Slot 0, textID не соответствует его ссылке со страницы (PageID), Slot 0. Сообщение 8961, уровень 16, состояние 1, Номер_строки Ошибка в таблице: ObjectID, indexID, PartitionID, allocUnitID (тип данных LOB). Узел данных за пределами строки на странице (PageID), Slot 0, textID не соответствует его ссылке со страницы (PageID), Slot 0. Msg 8929, Level = 16, State 1, LineNumberObjectID, indexID, PartitionID, allocUnitID (тип данных в строке): ошибки, обнаруженные в данных за пределами строки с идентификатором , принадлежащим записи данных, определяемой RID = (RID) Результаты DBCC для "TableName". Имеется 1 строки в 1 страницах для объекта "имя_таблицы". Для CHECKTABLE обнаружены ошибки распределения и 3 ошибки согласованности в таблице "TableName" (ObjectID). repair_allow_data_loss — это минимальный уровень восстановления для ошибок, обнаруженных DBCC CHECKTABLE (DatabaseName. имя_таблицы). Выполнение DBCC завершено. Если выводится сообщение об ошибке, обратитесь к системному администратору.
Решение
Эта проблема исправлена в перечисленных ниже накопительных обновлениях для SQL Server.
Накопительное обновление 5 для SQL Server 2016 RTM
Накопительное обновление 2 для SQL Server 2016 с пакетом обновления 1 (SP1)
Накопительное обновление 4 для SQL Server 2014 с пакетом обновления 2 (SP2)
Накопительное обновление 11 для SQL Server 2014 с пакетом обновления 1 (SP1)
Накопительное обновление 7 для SQL Server 2012 с пакетом обновления 3 (SP3)
Все новые накопительные обновления для SQL Server содержат все исправления и исправления для системы безопасности, включенные в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Последнее накопительное обновление для SQL Server 2016
Последнее накопительное обновление для SQL Server 2014
Последнее накопительное обновление для SQL Server 2012 с пакетом обновления 3 (SP3)
Обходное решение
Чтобы обойти эту ошибку после изменения типа данных, установите для параметра " типы больших значений из строки " значение 1.
ALTER TABLE TableName ALTER COLUMN COLUMN_NAME nvarchar(max) NOT NULL
go
exec sp_tableoption 'TableName', 'large value types out of row', '1'
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Ознакомьтесь с терминологией , которую корпорация Майкрософт использует для описания обновлений программного обеспечения.