SQL 2005/2008 データベースには、テーブル BatchMaster があります。列: RecordId bigint - 自動増分 ID、BatchNumber bigint - 一意の非クラスター化インデックス、BatchDate)。このテーブルからページ分割されたデータを返す sproc があります。その 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 でソートされたレコードを返す必要があります。それは私たちのクライアントの1人には起こりません:
レコードの順序が間違っています。また、最初の列 (行) に注意してください。昇順ではありません。
誰かがその理由を説明できますか?