文章编号: 2248999 - 最后修改: 2010年10月18日 - 修订: 2.0

FIX: 当更新视图或 Microsoft SQL Server 2008 R2 Microsoft SQL Server 2008 中,一个索引损坏时发生

系统提示此文章适用于与您所使用的操作系统不同的操作系统。文章内容可能与您无关,并且已被禁用。
Microsoft 分发 Microsoft SQL Server 2008,Microsoft SQL Server 2008 R2 修复作为一个可下载的文件。 该修复程序是累积性的因为每个新版本包含所有修补程序和所有安全修复程序以前的 SQL Server 2008 或 SQL Server 2008 R2 中包含的修补都程序版本。

本页

展开全部 | 关闭全部

症状

当您修改通过 Microsoft SQL Server 2008 中或在 Microsoft SQL Server 2008 R2 中的视图的数据时,与视图相关的表被损坏。

当满足下列条件为真时,将发生此问题:
  • 您有两个或多个具有相同结构的表。
  • 这些表没有聚集的索引。
  • 每个表都有可能为特定列的值限制在特定时间间隔的检查约束。 该时间间隔不能重叠。
  • 创建一个视图,它检索所有这些表的联合。 在联合的每个查询中使用 NOLOCK 提示。
  • 在视图中以并行方式的两个或多个会话中执行数据修改。 例如对于您执行更新、 插入或删除操作,在视图。

原因

因为数据修改操作过程中使用了不正确的锁隔离,就会出现问题。

解决方案

累积更新的信息

SQL Server 2008 Service Pack 1

在 SQL Server 2008 Service Pack 1 的累积更新 9 首先释放此修复程序以解决此问题。 有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2083921? (http://support.microsoft.com/kb/2083921/LN/ ) SQL Server 2008 Service Pack 1 的累积更新 9
请注意因为该版本是累积,每个新的修补程序版本包含所有修补程序和所有安全修复程序以前的 SQL Server 2008 中包含的修补都程序版本。 Microsoft 建议您考虑应用最新的修补程序版本包含此修补程序。 有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
970365? (http://support.microsoft.com/kb/970365/LN/ ) SQL Server 2008 生成的 SQL Server 2008 Service Pack 1 发布后发布
Microsoft SQL Server 2008 的修复程序会创建特定的 SQL Server 服务包。 必须将 SQL Server 2008 Service Pack 1 修补程序应用到 SQL Server 2008 Service Pack 1 的安装。 默认状态下,SQL Server service pack 中提供的任何修复程序包含在下一个 SQL Server service pack 中。

SQL Server 2008 Service Pack 2

修复此问题的第一次累积更新 1 中发布的 SQL Server 2008 Service Pack 2。 有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2289254? (http://support.microsoft.com/kb/2289254/ ) SQL Server 2008 Service Pack 2 的累积更新 1
请注意因为该版本是累积,每个新的修补程序版本包含所有修补程序和所有安全修复程序以前的 SQL Server 2008 中包含的修补都程序版本。 我们建议您考虑应用最新的修补程序版本包含此修补程序。 有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2402659? (http://support.microsoft.com/kb/2402659/ ) SQL Server 2008 生成的 SQL Server 2008 Service Pack 2 发布后发布

SQL Server 2008 R2

累积更新 4 中第一次释放该修补程序以解决此问题。 有关如何获取此累积更新包的 SQL Server 2008 R2 的详细信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2345451? (http://support.microsoft.com/kb/2345451/ ) SQL Server 2008 R2 的累积更新包 4
请注意因为该版本是累积,每个新的修补程序版本包含所有修补程序和所有安全修复程序以前的 SQL Server 2008 R2 中包含的修补都程序版本。 我们建议您考虑应用最新的修补程序版本包含此修补程序。 有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
981356? (http://support.microsoft.com/kb/981356/ ) SQL Server 2008 R2 构建 SQL Server 2008 R2 发布之后发布的

替代方法

要变通解决此问题,您可以尝试纠正损坏使用 DBCC CHECKDB (数据库名称、 REPAIR_REBUILD) 命令。 如果不能更正损坏,还原最新备份没有损坏。

状态

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

参考

为 SQL Server 渐进式的服务模型的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
935897? (http://support.microsoft.com/kb/935897/ ) 增量服务模型是可从 SQL Server 团队提供报告的问题的修补程序

有关 SQL Server 更新的命名架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
822499? (http://support.microsoft.com/kb/822499/ ) Microsoft SQL Server 软件更新程序包的新命名架构

有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684? (http://support.microsoft.com/kb/824684/ ) 用于描述 Microsoft 软件更新的标准术语的说明

这篇文章中的信息适用于:
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Workgroup
关键字:?
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2248999 KbMtzh
机器翻译机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 2248999? (http://support.microsoft.com/kb/2248999/en-us/ )
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。