修复 ︰ 当您更新升级 SQL Server 2005 中的数据库表中的另一个可变长度列,则可能会被删除的列数据

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。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 包含所有修补程序和所有安全修复程序包括在以前的累积更新安装的每个新的累积更新。为 SQL Server,请查阅最新的累积更新 ︰



注意:有关最新的 SQL Server 版本的详细信息,请参见 在哪里可以找到有关最新的 SQL Server 版本.
替代方法
重要:升级数据库从 SQL Server 2005 到 SQL Server 2014年或 SQL Server 2012年和之前让在已升级的数据库中运行 UPDATE 语句时,请应用此解决方法。

要变通解决此问题,如果您在一个表中删除列,请确保更新或删除行之前执行下列操作之一 ︰

  • 通过使用ALTER INDEX (...) 重建聚集的索引重新生成
  • 通过使用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 产品中的问题。

警告:本文已自动翻译

属性

文章 ID:3120595 - 上次审阅时间:05/31/2016 06:23:00 - 修订版本: 11.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
反馈