症状
假设你使用的是 Microsoft SQL Server 2008 R2、SQL Server 2012 或 SQL Server 2014。 使用 TOP N 和 ORDER BY 执行查询时,查询将命中与以下内容类似的断言失败:
位置: "qstopsrt":384Expression: fFalseSPID: <spid>进程 id: <ProcessID>位置: qxcntxt:1052Expression: cref = = 0SPID: <SPID>进程 ID: <ProcessID>消息3624,级别20,状态1,行2a 系统断言检查失败。 有关详细信息,请查看 SQL Server 错误日志。 通常,断言失败由软件错误或数据损坏导致。 若要检查数据库是否损坏,请考虑运行 DBCC CHECKDB。 如果你同意在安装期间将转储发送到 Microsoft,则会向 Microsoft 发送一个小转储。 从 Microsoft 的最新服务包或从技术支持部门获取的 QFE 中可能提供更新。 消息0、级别20、状态0、行0A 当前命令上出现严重错误。 应丢弃结果(如果有)。
注意 此修补程序也可能会应用于该查询计划包含 "Sort (N 排序)"。
原因
出现此问题的原因是查询执行引擎中出现内部错误。
解决方案
在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2012 SP2 的累积更新1 /en-us/help/2976982
SQL Server 2014 的累积更新2 /en-us/help/2967546
SQL Server 2012 SP1 的累积更新10 /en-us/help/2954099
SQL Server 2008 R2 SP2 的累积更新12 /en-us/help/2938478
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。