Ознаки
Ви змінюєте тип даних стовпця в таблиці бази даних від ntext до nvarmar (Max) на сервері, на якому запущено Microsoft SQL Server 2012, 2014 або 2016. Коли ви оновлюєте таблицю, додавши понад 4 000 записів, DBCC CHECKDB може повідомляти про помилки, які нагадують такі повідомлення:
MSG 8961, рівень 16, стан 1, Linenumber Помилка таблиці: " об'єктивна", " ідентифікатор _ клієнта", "код _ клієнта", allocUnitID (тип даних "лоб"). Вузол даних Off-Row на сторінці (pageid), слот 0, textID не відповідає її посилання на сторінці (pageid), слот 0. MSG 8961, рівень 16, стан 1, Linenumber Помилка таблиці: " об'єктивна", " ідентифікатор _ клієнта", "код _ клієнта", allocUnitID (тип даних "лоб"). Вузол даних Off-Row на сторінці (pageid), слот 0, textID не відповідає її посилання на сторінці (pageid), слот 0. MSG 8929, рівень 16, стан 1, Linenumberоб'єктидій, ідентифікатор індексування, partitionid, allocUnitID (введіть дані в рядках): помилки, знайдені в нерядках дані з ІДЕНТИФІКАТОРОМ , що належить запису даних, виявлених за допомогою функції позбавити = (позбавити) Результати DBCC для "TableName". На 1 сторінках об'єкта "TableName" є 1 рядки. CHECKTABLE знайдено 0 помилок виділення та 3 помилки узгодженості в таблиці "TableName" (об'єктив). repair_allow_data_loss – це мінімальний рівень відновлення помилок, виявлених уDatabaseName. TableName(DBCC). Виконання DBCC завершено. Якщо повідомлення про помилку DBCC надруковано, зверніться до системного адміністратора.
Спосіб вирішення
Ця проблема усунена в таких сукупних оновлень для SQL Server:
Сукупне оновлення 5 для SQL Server 2016 RTM
Сукупне оновлення 2 для SQL Server 2016 SP1
Сукупне оновлення 4 для SQL Server 2014 SP2
Кожне нове Сукупне оновлення для SQL Server містить усі виправлення виправлень і виправлень, які були включені до попереднього сукупного оновлення. Ознайомтеся з найновішими сукупними оновленнями для сервера SQL Server:
Найновіше Сукупне оновлення для SQL Server 2016
Інші способи вирішення
Щоб вирішити цю проблему після Змінення типу даних, установіть для параметра велике значення параметр "вийти з рядка " на 1.
ALTER TABLE TableName ALTER COLUMN COLUMN_NAME nvarchar(max) NOT NULL
go
exec sp_tableoption 'TableName', 'large value types out of row', '1'
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".
Посилання
Відомості про термінологію , яку корпорація Майкрософт використовує для опису оновлень програмного забезпечення.