Příznaky
Datový typ sloupce v databázové tabulce změníte na serveru, na kterém běží Microsoft SQL Server 2012, 2014 nebo 2016. Když aktualizujete tabulku přidáním víc než 4 000 záznamů, může příkaz DBCC CHECKDB ohlásit chyby podobné následujícím:
Msg 8961, úroveň 16, stav 1, lineNumber Chyba tabulky: objectID, indexID, PartitionID, allocUnitID (typ dat LOB) Uzel data mimo řádek na stránce (pageid), slotu 0, textID neodpovídá svému odkazu na stránku (pageid), pozici 0. Msg 8961, úroveň 16, stav 1, lineNumber Chyba tabulky: objectID, indexID, PartitionID, allocUnitID (typ dat LOB) Uzel data mimo řádek na stránce (pageid), slotu 0, textID neodpovídá svému odkazu na stránku (pageid), pozici 0. Msg 8929, úroveň 16, stav 1, lineNumberobjectID, indexID, PartitionID, allocUnitID (zadejte data v řádku): Chyby nalezené v datech mimo řádek s ID , které je vlastněno datovým záznamem podle RID = (RID) Výsledky příkazu DBCC pro příkazTableName Pro objekt "TableName" je na 1 stránkách 1 řádek. CHECKTABLE zjistil chyby přidělení 0 a 3 chyby konzistence v tabulce "TableName" (objectID). repair_allow_data_loss je minimální úroveň opravy pro chyby nalezené příkazem DBCC CHECKTABLE (DatabaseName. TableName). Příkaz DBCC byl dokončen. Pokud příkaz DBCC vytiskl chybové zprávy, obraťte se na správce systému.
Řešení
Tento problém je opravený v následujících kumulativních aktualizacích systému SQL Server:
Kumulativní aktualizace 5 pro SQL Server 2016 RTM
Kumulativní aktualizace 2 pro SQL Server 2016 SP1
Kumulativní aktualizace 4 pro SQL Server 2014 SP2
Kumulativní aktualizace 11 pro SQL Server 2014 SP1
Kumulativní aktualizace 7 pro SQL Server 2012 Service Pack 3
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace SQL serveru:
Nejnovější kumulativní aktualizace pro SQL Server 2016
Alternativní řešení
Pokud chcete tento problém vyřešit po změně datového typu, nastavte možnost pro velké hodnoty mimo řádek na hodnotu1.
ALTER TABLE TableName ALTER COLUMN COLUMN_NAME nvarchar(max) NOT NULL
go
exec sp_tableoption 'TableName', 'large value types out of row', '1'
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.
Odkazy
Informace o terminologii , kterou Microsoft používá k popisu aktualizací softwaru.