Симптоми
Можете да промените типа на данните на колона в таблица на база данни от ntext на nvarchar (max) на сървър, на който се изпълнява Microsoft SQL Server 2012, 2014 или 2016. Когато актуализирате таблицата, като добавите повече от 4 000 Records, DBCC CHECKDB може да съобщи за грешки, които приличат на следните:
MSG 8961, ниво 16, щат 1, LineNumber Грешка в таблицата: ObjectID, indexID, partitionID, allocUnitID (данни за тип висока топка). Възелът за данни извън реда на страницата (PageID), Slot 0, textID не съвпада с препратките му от страницата (PageID), Slot 0. MSG 8961, ниво 16, щат 1, LineNumber Грешка в таблицата: ObjectID, indexID, partitionID, allocUnitID (данни за тип висока топка). Възелът за данни извън реда на страницата (PageID), Slot 0, textID не съвпада с препратките му от страницата (PageID), Slot 0. MSG 8929, ниво 16, щат 1, LineNumberObjectID, indexID, PartitionID, AllocUnitID (данни за тип в ред): грешки, които са открити в нередови данни с ИД , притежаван от запис на данни, определен чрез RID = (RID) DBCC резултати за "TableName". Има 1 реда в 1 страници за обекта "TableName". CHECKTABLE е намерил 0 грешки при разпределяне и 3 грешки за последователност в таблица "TableName" (ObjectID). repair_allow_data_loss е минималната степен на поправяне на грешките, открити от DBCC CHECKTABLE (DatabaseName. TableName). Изпълнението на 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 потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".
Препратки
Научете повече за терминологията , която Microsoft използва, за да опише софтуерни актуализации.