В базе данных 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. Этого не произойдет ни с одним из наших клиентов:
Записи расположены в неправильном порядке. Кроме того, обратите внимание на первый столбец (строка), он не в порядке возрастания.
Кто-нибудь может объяснить, почему так?