使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

徵狀

您可以在執行 Microsoft SQL Server 2012、2014或2016的伺服器上,將資料庫資料表中資料行的資料類型從 Ntext 變更為 Nvarchar (max) 。 當您新增超過4000條記錄來更新資料表時,DBCC CHECKDB 可能會報告如下所示的錯誤:

Msg 8961、Level 16、State 1、 LineNumber 資料表錯誤: ObjectIDindexIDPARTITIONIDallocUnitID (類型 LOB 資料)。 在頁面(PageID)、槽0、 textID 與(PageID)、槽0中的 [離列資料] 節點不符合其參照。 Msg 8961、Level 16、State 1、 LineNumber 資料表錯誤: ObjectIDindexIDPARTITIONIDallocUnitID (類型 LOB 資料)。 在頁面(PageID)、槽0、 textID 與(PageID)、槽0中的 [離列資料] 節點不符合其參照。 Msg 8929、Level 16、State 1、 LineNumberObjectIDindexIDpartitionIDallocUnitID (輸入列內資料):在非資料列資料中發現錯誤,且由 RID 所辨識的資料記錄所擁有的 識別碼 = (RID) "TableName" 的 DBCC 結果。 物件 "TableName" 的1頁中有1列。 CHECKTABLE 發現資料表 "TableName" (ObjectID)中出現0個分配錯誤和3個一致性錯誤。 repair_allow_data_loss 是 DBCC CHECKTABLE (DatabaseName. TableName)找到之錯誤的最低修復層級。 DBCC 執行已完成。 如果 DBCC 已列印錯誤訊息,請與您的系統管理員聯繫。

解決方案

此問題已在 SQL Server 的下列累積更新中修正:

SQL Server 2016 RTM 的累積更新5

SQL Server 2016 SP1 的累積更新2

SQL Server 2014 SP2 累積更新4

SQL Server 2014 SP1 累積更新11

SQL Server 2012 累積更新 7 Service Pack 3

每個新的 SQL Server 累積更新包含前一個累積更新中所包含的所有修復程式和安全性修正程式。查看 SQL Server 的最新累計更新:

SQL Server 2016 的最新累計更新

SQL Server 2014 的最新累計更新

SQL Server 2012 SP3 的最新累計更新

因應措施

若要在變更資料類型後解決這個問題,請將 [ 大型數值型別不列 ] 選項設定為 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 用於描述軟體更新的 術語

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×