Думайте о включении, как имеет отношения. Автомобиль "имеет" механизм, у человека "есть" имя, и т.д.
Думают о наследовании, как отношения. Автомобиль "является" механизмом, человек "является" млекопитающим, и т.д.
я не беру кредита на этот подход. Я взял его прямо от 110-секундного Выпуска Кода, Завершенного Steve McConnell , Раздел 6.3 .
Похоже, вы используете неправильный синтаксис. Вот пример использования базы данных AdventureWorks.
select
row_number() over(order by Name),
Name
from HumanResources.Department
Расширение двух других ...
Я пробовал та же самая команда в SQL 2005 с двумя базами данных.
Для обоих уровней совместимости 80 и 90 ошибка следующая:
Msg 1035, Level 15, State 10, Line 2
Incorrect syntax near 'ROW_NUMBER', expected 'OVER'.
Я могу сгенерировать эту ошибку только в окне SQL 2000:
Msg 195, Level 15, State 10, Line 2
'ROW_NUMBER' is not a recognized function name.
Что делает SELECT @@ version
говорите? Я на 100% уверен, что вы используете ту версию, которую ожидаете ...
Другая моя мысль - это уровень совместимости 65, который не может быть явно установлен в SQL Server 2005 и выше, кажется. И у меня нет никаких старых баз данных для тестирования.
Проверьте совместимость вашей базы данных; убедитесь, что установлено значение 90 или выше.
Похоже, здесь есть как минимум 2 несоответствия.
ROW_NUMBER OVER ()
. Возможно, вы используете SQL 2008 Management Studio для подключения к машине SQL 2000? Дважды проверьте с помощью SELECT @@ Version
, что ваша БД действительно является БД SQL 2008.