當您更新從 SQL Server 2005 升級資料庫的資料表中的另一個可變長度資料行時,資料行的資料可能刪除的修正程式 ︰

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:3120595
徵狀
當您更新已從 Microsoft SQL Server 2005年升級的資料庫資料表中的可變長度資料行中的值時,則會刪除同一列中的另一個可變長度資料行中的資料。

在 Microsoft SQL Server 2014年和 Microsoft SQL Server 2012年,就會發生這個問題。下列案例可能會公開此問題的資料庫。此清單會呈現一系列事件 ︰

  • 在 SQL Server 2005 中建立資料庫。
  • 在 SQL Server 2005,您改變資料表,然後再卸除的資料表定義結尾的一或多個可變長度資料行。
  • 您新增新的可變長度資料行具有類似的資料型別和已卸除資料行長度。
  • 在資料庫從 SQL Server 2005 升級至 SQL Server 2014年或 SQL Server 2012年。
  • 稍後就可以更新另一個的可變長度資料行的值,更新的資料至新頁面溢位。
在這個案例中,可能會刪除一或多個新加入的資料行,在同一列中的資料。

您可以使用中的指令碼 更多的資訊 若要確認下列區段 ︰

  • 是否在指定的資料庫中的任何資料表的可變長度資料行已被刪除
  • 是否其他的可變長度資料行已建立具有相符的位移
附註由 DBCC CHECKDB 找不到這個問題。
解決方案
附註此修正程式只能防止未來的週期性工作的問題。

重要如果您正在升級資料庫從 SQL Server 2005,SQL Server 2014年或 SQL Server 2012年,請確定您參照的 < 其他可行方案 > 一節。

下列的累積更新的 SQL Server,已先修正這個問題 ︰

這些是最新累積的更新這些程式版本。

建議 ︰ 安裝最新的 SQL Server 2014年或 SQL Server 2012年累積更新

SQL Server 會包含所有的 hotfix,並且所有的安全性修正,被包含在先前的累積更新,請安裝每個新累積的更新。取出 SQL Server 的最新的累積更新 ︰



附註如需有關最新的 SQL Server 組建的詳細資訊,請參閱 何處可以找到最新的 SQL Server 有關的資訊建置.
其他可行方案
重要當 SQL Server 2014年或 SQL Server 2012年和之前您讓在升級的資料庫中執行的 UPDATE 陳述式,從 SQL Server 2005 升級資料庫時,請套用此因應措施。

如果要解決這個問題,如果您在資料表中卸除資料行,請確定您執行下列任一個動作之前您更新或刪除資料列 ︰

  • 使用改變索引 (...) 來重建叢集的索引重建
  • 重建堆積使用 ALTER TABLE (...) 重建

其他相關資訊
您可以使用下列的指令碼,以確認是否在指定的資料庫中的任何資料表已刪除可能會受到這個問題的資料行。

附註如果指令碼不會傳回任何資料列,這表示,這個問題目前不適用於任何資料表在您的系統。
SELECT DISTINCT OBJECT_NAME(sp.[object_id]) AS TableWithDroppedColsFROM sys.system_internals_partition_columns sipc1 WITH (NOLOCK)INNER JOIN sys.system_internals_partition_columns sipc2 WITH (NOLOCK)       ON sipc1.[partition_id] = sipc2.[partition_id] AND              sipc1.leaf_offset = sipc2.leaf_offset AND              sipc1.leaf_offset < 0 AND               sipc1.is_dropped < sipc2.is_droppedINNER JOIN sys.partitions sp WITH (NOLOCK) ON sipc1.[partition_id] = sp.[partition_id];

重要這個指令碼應該只能用於的目的與範圍的本文。
狀況說明
Microsoft 已確認這是<套用> 一節所列出的 Microsoft 產品的問題。

警告:本文為自動翻譯

內容

文章識別碼:3120595 - 最後檢閱時間:05/31/2016 06:21:00 - 修訂: 12.0

Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3120595 KbMtzh
意見反應