修复:使用降序排序顺序对包含索引的表运行查询时,可能会出现不正确的结果
现象
安装 SQL Server 2022 累积更新 4(CU4)后,可能会收到满足以下所有条件的查询的错误结果:
索引显式指定降序排序顺序。 下面是一个示例:
CREATE NONCLUSTERED INDEX [nci_table_column1] ON [dbo].[table1] (column1 DESC)
针对包含这些索引的表运行查询。 这些查询指定与索引的排序顺序匹配的排序顺序。
排序列用于子句中的
WHERE IN
查询谓词或多个相等子句。 下面是一个示例:SELECT * FROM [dbo].[table1] WHERE column1 IN (1,2) ORDER BY column1 DESC SELECT * FROM [dbo].[table1] WHERE column1 = 1 or column1 = 2 ORDER BY column1 DESC
注意
IN
具有单个值的子句没有此问题。
解决方法
此问题已在 SQL Server 的以下累积更新中修复:
关于 SQL Server 的累积更新
SQL Server 的每个新的累积更新都包含上一个版本中的所有修补程序和安全修补程序。 建议为 SQL Server 版本安装最新版本:
解决方法
若要解决此问题,请卸载 SQL Server 2022 CU4 或启用跟踪标志 (TF) 13166,然后运行 DBCC FREEPROCCACHE
。
Status
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。
参考
了解 Microsoft 用于描述软件更新的术语。