非聚集索引损坏 NOLOCK 提示以及复杂 UPDATE 语句运行 SQL Server 2008年,SQL Server 2008 R2 或 SQL Server 2012年中的表时可能出现的修补程序:

文章翻译 文章翻译
文章编号: 2878968 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

NOLOCK提示以及复杂UPDATE语句运行 Microsoft SQL Server 2008年,Microsoft SQL Server 2012年或 Microsoft SQL Server 2008 R2 中的表时,可能会出现非聚集索引损坏。此外,可能 SQL Server 错误日志中记录以下错误消息:

日期1>时间1> spid # 错误: 8646,严重性: 21,状态: 1。
日期1>时间1> spid 无法找到索引条目中的 2102402659,数据库表中的索引 ID 3 #'数据库名称'1> '。指示的索引已损坏,或没有当前更新计划的问题。运行 DBCC CHECKDB 或对应。如果问题仍然存在,请与产品支持联系。
日期1>时间1> spid # Using dbghelp.dll 版本"4.0.5"
日期1>时间1> spid # * * 转储线程-spid = 0,EC = 0x0000000BD70624C0
日期1>时间1> spid # *** 堆栈转储发送到 Y:\MSSQL\MSSQL10。MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt
Date>Time> spid # * *******************************************************************************
日期1>时间1> spid # *
日期1>时间1> spid # * 开始堆栈转储:
日期1>时间1> spid # *日期1>时间1> spid #
日期1>时间1> spid # *
日期1>时间1> spid # * CPerIndexMetaQS::ErrorAbort-索引损坏
日期1>时间1> spid # *

注意
可以将NOLOCK提示应用于源语句中的表。但是,不能将NOLOCK提示应用到目标表中的语句。

原因

因为NOLOCK提示将使查询错误地读取表中的值,当查询中多次读取相同的值时,会出现此问题。

解决方案

问题是第一次更新修复了以下累计的 SQL Server。

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

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

SQL Server 2008 sp3 的累积更新 13

SQL Server 2008 R2 sp2 的累积更新 9

有关累积更新 SQL Server

收起这个图片展开这个图片
assets folding start collapsed
为 SQL Server 的每个新的累积更新中包含的所有修补程序和所有安全修补程序,已包括在以前的累积更新。SQL Server 检查出最新的累积更新:
收起这个图片展开这个图片
assets folding end collapsed

状态

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

属性

文章编号: 2878968 - 最后修改: 2013年12月16日 - 修订: 4.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2008 Service Pack 3?当用于
    • Microsoft SQL Server 2008 Enterprise
    • Microsoft SQL Server 2008 Developer
    • Microsoft SQL Server 2008 Standard
  • 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 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
关键字:?
kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2878968 KbMtzh
机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 2878968
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com