为什么ROW_NUMBER()
在SQL Server 2008中无法识别为函数名?
我试试这个
SELECT
ROW_NUMBER() AS Row, Lname
FROM MEN
GO
我收到此错误:
Msg 195,Level 15,State 10,Line 1 'ROW_NUMBER'不是公认的 功能名称。
答案 0 :(得分:27)
您似乎使用了错误的语法。以下是使用AdventureWorks数据库的示例。
select
row_number() over(order by Name),
Name
from HumanResources.Department
答案 1 :(得分:10)
扩展其他2个答案......
我在SQL 2005上用2个数据库尝试了完全相同的命令。
对于兼容级别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
说什么?我百分百肯定你的版本是你期望的......
我的另一个想法是compat等级65 can't be set explicitly in SQL Server 2005及以上看起来。我没有任何遗留数据库可供测试。
答案 2 :(得分:4)
检查数据库兼容性;确保它设置为90或更高。
看来这里至少有两件事情不合时宜。
ROW_NUMBER OVER()
keywords /命令。也许您使用SQL 2008 Management Studio连接到SQL 2000计算机?仔细检查SELECT @@Version
您的数据库确实是SQL 2008数据库。 答案 3 :(得分:0)
如果您正在使用SQL Sever 2008的SSMS,那么这并不意味着您将连接到相应的数据库。使用@@ version检查您连接的数据库的版本,因为SQL 2005使用:[ROW_NUMBER()OVER(ORDER BY ColName)]