Когда вы выполняете SET ROWCOUNT 10, вы говорите SQL остановить запрос после того, как будут возвращены 10 результатов.Ваш первый оператор SQL - правильный синтаксис (за исключением первой строки, которая должна читать SET ROWCOUNT 10).
Вторая записанная инструкция вернет все упорядоченные значения при первоначальном выполнении, а затем установит счетчик строк равным 10, поэтому при любом последующем выполнении вернутся первые 10 элементов.
ROWCOUNT должен быть установлен в 0, чтобы вернуть вещи к «нормальному» выполнению.
Что касается того, почему вещи возвращались по-разному, данные могут не обрабатываться каждый раз одинаково и с учетом размераиз вашего набора данных наиболее вероятно, что вы иногда можете получить совпадающие результаты, но это не совсем точно.Если вы хотите стабильных результатов и хотите только первые 10 результатов, я бы порекомендовал использовать TOP.