症状

当对 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 产品问题。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×