使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

当对 Microsoft SQL Server 2008、SQL server 2012、SQL Server 2008 R2 或 SQL Server 2014中的表同时运行复杂更新语句时,可能会发生非聚集索引损坏。 此外,SQL Server 错误日志中可能会记录以下错误消息:

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

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

原因

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

SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

状态

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×