徵狀
假設您使用的是 Microsoft SQL Server 2008 R2、SQL Server 2012 或 SQL Server 2014。 當您使用 TOP N 和 ORDER BY 執行查詢時,查詢會命中下列類似的 assert 失敗:
位置: "qstopsrt":384Expression: fFalseSPID: <spid>程式識別碼: <ProcessID>位置: qxcntxt:1052Expression: cref = = 0SPID: <SPID>進程識別碼: <ProcessID>Msg 3624、Level 20、State 1、Line 2a 系統斷言檢查已失敗。 如需詳細資訊,請參閱 SQL Server 錯誤記錄。 通常,宣告失敗是由軟體錯誤或資料損毀所導致。 若要檢查資料庫是否損毀,請考慮執行 DBCC CHECKDB。 如果您同意在安裝期間將轉儲傳送至 Microsoft,則會將迷你轉儲傳送至 Microsoft。 您可以從 Microsoft 最新 Service Pack 中的 Microsoft 取得更新,或從技術支援取得 QFE。 Msg 0,階層20,狀態0,行0A 在目前命令上發生嚴重錯誤。 結果(如果有的話)應該捨棄。
注意: 此修正程式也可能適用于查詢方案包含 [排序(前 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 產品確實有上述問題。