SQL ROW_NUMBER и проблема с сортировкой

В базе данных 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. Этого не произойдет ни с одним из наших клиентов: enter image description here

Записи расположены в неправильном порядке. Кроме того, обратите внимание на первый столбец (строка), он не в порядке возрастания.

Кто-нибудь может объяснить, почему так?

5
задан lanzz 11 June 2012 в 13:20
поделиться