Triệu chứng
Bạn thay đổi kiểu dữ liệu của cột trong bảng cơ sở dữ liệu từ ntext sang nvarchar (Max) trên một máy chủ đang chạy Microsoft SQL Server 2012, 2014 hoặc 2016. Khi bạn cập nhật bảng bằng cách thêm nhiều hơn 4.000 bản ghi, DBCC CHECKDB có thể báo cáo các lỗi giống như sau:
Msg 8961, mức 16, bang 1, Linenumber Lỗi bảng: ObjectID, indexid, partitionid, allocunitid (type LOB Data). Nút dữ liệu ngoài hàng tại trang (pageid), slot 0, textid không khớp với tham chiếu của nó từ trang (pageid), slot 0. Msg 8961, mức 16, bang 1, Linenumber Lỗi bảng: ObjectID, indexid, partitionid, allocunitid (type LOB Data). Nút dữ liệu ngoài hàng tại trang (pageid), slot 0, textid không khớp với tham chiếu của nó từ trang (pageid), slot 0. Msg 8929, Level 16, State 1, LinenumberObjectID, indexid, partitionid, allocunitid (nhập dữ liệu trong hàng): lỗi được tìm thấy trong dữ liệu ngoài hàng với ID thuộc sở hữu của bản ghi dữ liệu được xác định bằng cách thoát = (thoát) Kết quả DBCC cho 'tablename'. Có 1 hàng trong 1 trang cho đối tượng "tablename". BẢNG tính đã tìm thấy 0 lỗi phân bổ và 3 lỗi nhất quán trong bảng 'tablename' (ObjectID). repair_allow_data_loss là mức sửa chữa tối thiểu cho các lỗi được tìm thấy theo DBCC CHECKTABLE (Databasename. TableName). DBCC thực hiện đã hoàn thành. Nếu thông báo lỗi DBCC Printed, hãy liên hệ với người quản trị hệ thống của bạn.
Giải pháp
Sự cố này đã được khắc phục trong các bản Cập Nhật tích lũy sau đây cho SQL Server:
Bản Cập Nhật tích lũy 5 cho SQL Server 2016 RTM
Bản Cập Nhật tích lũy 2 cho SQL Server 2016 SP1
Bản Cập Nhật tích lũy 4 cho SQL Server 2014 SP2
Mỗi bản Cập Nhật tích lũy mới cho SQL Server chứa tất cả các bản sửa lỗi và bản sửa lỗi bảo mật đã được đưa vào bản Cập Nhật tích lũy trước đó. Kiểm tra các bản Cập Nhật tích lũy mới nhất cho SQL Server:
Bản Cập Nhật tích lũy mới nhất cho SQL Server 2016
Cách giải quyết
Để làm việc xung quanh vấn đề này sau khi bạn thay đổi kiểu dữ liệu, hãy đặt tùy chọn loại giá trị lớn ra khỏi hàng thành 1.
ALTER TABLE TableName ALTER COLUMN COLUMN_NAME nvarchar(max) NOT NULL
go
exec sp_tableoption 'TableName', 'large value types out of row', '1'
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Tham khảo
Tìm hiểu về thuật ngữ Microsoft sử dụng để mô tả các bản cập nhật phần mềm.