你目前正处于脱机状态,正在等待 Internet 重新连接

修复: 数据损坏发生时 LOB 数据加载到 SQL Server 2008 R2、 SQL Server 2012年或 SQL Server 2008年中的事务处理性的 SQL 变量

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 2803994
症状
包含要加载到 Microsoft SQL Server 2008年,Microsoft SQL Server 2012年或 Microsoft SQL Server 2008 R2 中的事务处理性的 SQL 变量的大型对象 (LOB) 数据的查询运行时,会发生数据损坏。例如,您可以运行下面的查询将从数据库列的 XML 数据复制到一个 XML 变量:
Declare @OUTXML as XMLSELECT @OUTXML = DataXml FROM Table_1 WHERE id=1 

在此情况下,当其他线程尝试更新同一 XML 列时,将运行SELECT语句。这种现象可能会导致数据损坏。此外,您收到以下错误消息之一执行任何读取并对损坏的 XML 列执行写入操作时:
  • XML 数据类型已损坏。
  • 出现意外的文件结尾。
备注
  • 通常在高并发装载操作期间出现问题。
  • 使用日志读取器代理程序以从属于为事务复制发布文章列表的表中读取已损坏的 XML 数据时,您会收到以下错误消息:

    XML 数据类型已损坏。(来源: MSSQLServer,错误号: 6611)
原因
因为之前 LOB 数据的数据库列从复制到 LOB 数据类型变量,LOB 数据列上的锁被释放,则会出现此问题。在复制过程中完成复制过程之前,任何的并发查询可以更新相同的 LOB 数据。因此,会发生数据损坏。
解决方案

累积更新信息

对于 SQL Server 2012年的累积更新 7

累积更新 7 中首次发布此问题的修补程序。有关如何为 SQL Server 2012年获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2823247 对于 SQL Server 2012年的累积更新包 7
注意 版本具有累积性的因为每个新修补程序版本包含的所有修补程序和所有安全修复程序包含上一个 SQL Server 2012年与修补都程序版本。我们建议您考虑将应用了最新的修补程序版本包含此修复程序。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2692828 SQL Server 2012年生成 SQL Server 2012年发布之后发布

SQL Server 2008 R2 Service pack 1 的累积更新 12

累积更新 12 中首次发布此问题的修补程序。有关如何为 SQL Server 2008 R2 Service Pack 1 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2828727 对于 SQL Server 2008 R2 Service Pack 1 的累积更新包 12
注意 生成是累积性的因为每个新修补程序版本包含的所有修补程序,并附带上一个 SQL Server 2008 R2 Service Pack 1 的所有安全修补程序的修补都程序版本。我们建议您考虑将应用了最新的修补程序版本包含此修复程序。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2567616 在 SQL Server 2008 R2 Service Pack 1 月发布之后发布的 SQL Server 2008 R2 生成

SQL Server 2008 Service pack 3 的累积更新 10

累积更新 10 中首次发布此问题的修补程序。有关如何为 SQL Server 2008 Service Pack 3 中获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2814783 累积更新包 10 的 SQL Server 2008 Service Pack 3
注意 这些版本具有累积性的因为每个新修补程序版本包含的所有修补程序和了上一个 SQL Server 2008 Service Pack 3 中包含的所有安全修补程序的修补都程序版本。我们建议您考虑将应用了最新的修补程序版本包含此修复程序。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2629969 SQL Server 2008年在 SQL Server 2008 Service Pack 3 月发布之后发布的生成

SQL Server 2008 R2 Service pack 2 (SP2) 的累积更新 5

累积更新 5 中首次发布此问题的修补程序。有关如何为 SQL Server 2008 R2 S2008 R2 SP2 中获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2797460 SQL Server 2008 R2 S2008 R2 sp2 的累积更新包 5
注意 版本具有累积性的因为每个新修补程序版本包含的所有修复程序和所有安全修复程序包含上一个 SQL Server 2008 R2 S2008 R2 sp2 修补都程序版本。我们建议您考虑将应用了最新的修补程序版本包含此修复程序。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2730301 在 SQL Server 2008 R2 Service Pack 2 月发布之后发布的 SQL Server 2008 R2 生成

状态
Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。


警告:本文已自动翻译

属性

文章 ID:2803994 - 上次审阅时间:04/15/2013 12:32:00 - 修订版本: 3.0

Microsoft SQL Server 2008 R2 Service Pack 2, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, SQL Server 2012 Enterprise Core

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2803994 KbMtzh
反馈