Objawy
Zmieniasz typ danych kolumny w tabeli bazy danych z ntext na nvarchar(max) na serwerze z uruchomionym programem Microsoft SQL Server 2012, 2014 lub 2016. Podczas aktualizowania tabeli przez dodanie ponad 4000 rekordów funkcja DBCC CHECKDB może zgłaszać błędy podobne do następujących:
Uwaga
Komunikat 8961, Poziom 16, Stan 1, Numer wiersza
Błąd tabeli: ObjectID,indexID, partitionID, allocUnitID (typ danych LOB). Węzeł danych off-row na stronie (PageID), slot 0, textID does not match to reference from page (PageID), slot 0.
Komunikat 8961, Poziom 16, Stan 1, Numer wiersza
Błąd tabeli: ObjectID,indexID, partitionID, allocUnitID (typ danych LOB). Węzeł danych off-row na stronie (PageID), slot 0, textID does not match to reference from page (PageID), slot 0.
Wiadomość 8929, Poziom 16, Stan 1, Numer wiersza
ObjectID,indexID,partitionID,allocUnitID (typ Dane w wierszu): Błędy znalezione w danych off-row z identyfikatorem należącym do rekordu danych zidentyfikowanego przez RID = (RID)
Wyniki DBCC dla tabeli 'TableName'.
Dla obiektu "TableName" jest 1 wiersz na 1 stronach.
Funkcja CHECKTABLE znalazła 0 błędów alokacji i 3 błędy spójności w tabeli "TableName" (ObjectID).
repair_allow_data_loss jest minimalnym poziomem naprawy błędów znalezionych przez funkcję DBCC CHECKTABLE (DatabaseName.TableName).
Wykonanie DBCC ukończone. Jeśli DBCC wydrukowało komunikaty o błędach, skontaktuj się z administratorem systemu.
Rozwiązanie
Ten problem został rozwiązany w następujących aktualizacjach zbiorczych programu SQL Server:
Aktualizacja skumulowana 5 dla programu SQL Server 2016 RTM
Aktualizacja zbiorcza 2 dla programu SQL Server 2016 z dodatkiem SP1
Aktualizacja zbiorcza 4 dla programu SQL Server 2014 z dodatkiem SP2
Aktualizacja zbiorcza 11 dla programu SQL Server 2014 z dodatkiem SP1
Aktualizacja zbiorcza 7 dla programu SQL Server 2012 z dodatkiem Service Pack 3
Informacje o aktualizacjach zbiorczych dla programu SQL Server
Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej aktualizacji skumulowanej. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:
Najnowsza aktualizacja zbiorcza dla programu SQL Server 2016
Najnowsza aktualizacja zbiorcza dla programu SQL Server 2014
Najnowsza aktualizacja zbiorcza dla programu SQL Server 2012 z dodatkiem SP3
Obejście
Aby obejść ten problem po zmianie typu danych, ustaw opcję Typy dużych wartości poza wierszem na 1.
ALTER TABLE TableName ALTER COLUMN COLUMN_NAME nvarchar(max) NOT NULL
go
exec sp_tableoption 'TableName', 'large value types out of row', '1'
Stan
Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.
Źródła informacji
Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.