在 SQL 2005/2008 数据库中,我们有表 BatchMaster。列:RecordId bigint - 自动增量 ID,BatchNumber bigint - 唯一非聚集索引,BatchDate)。我们有从这个表返回分页数据的 sproc。该存储过程适用于大多数客户端,但在一个 SQL 服务器实例中,我们的记录顺序存在问题。一般来说,在 sproc 我们做
select * from
(
select row_number() over (order by bm.BatchDate desc, bm.BatchNumber desc) as Row,
*
from dbo.BatchMaster bm with (nolock)
)
where Row between @StartingRow and @EndgingRow
因此,您可以从上面的脚本中注意到,我们希望返回按 BatchDate 和 BatchNumber 排序的记录。这不会发生在我们的一位客户身上:
记录顺序错误。另外,请注意第一列(行),它不是按升序排列的。
有人可以解释为什么会这样吗?