爲什麼ROW_NUMBER()
在SQL Server 2008中不被識別爲函數名?爲什麼ROW_NUMBER()在SQL Server 2008中不被識別?
我試試這個
SELECT
ROW_NUMBER() AS Row, Lname
FROM MEN
GO
,我得到這個錯誤:
Msg 195, Level 15, State 10, Line 1 'ROW_NUMBER' is not a recognized function name.
爲什麼ROW_NUMBER()
在SQL Server 2008中不被識別爲函數名?爲什麼ROW_NUMBER()在SQL Server 2008中不被識別?
我試試這個
SELECT
ROW_NUMBER() AS Row, Lname
FROM MEN
GO
,我得到這個錯誤:
Msg 195, Level 15, State 10, Line 1 'ROW_NUMBER' is not a recognized function name.
你似乎是使用了錯誤的語法。這裏是一個使用AdventureWorks數據庫的例子。
select
row_number() over(order by Name),
Name
from HumanResources.Department
錯誤將會是「ROW_NUMBER附近的語法錯誤」,預計'OVER'「,僅在SQL 2005上測試過。 – gbn 2009-07-25 18:32:15
gbn正確:當ROW_NUMBER函數在沒有OVER子句的情況下調用時,錯誤消息是*不同*。異常表示服務器不是正確的版本。 – 2009-07-25 20:35:34
檢查數據庫的兼容性;確保它設置爲90或更高。
看起來至少有兩件事情在這裏不重要。
ROW_NUMBER OVER()
關鍵字/命令。也許你在使用SQL 2008 Management Studio連接到SQL 2000機器嗎?請仔細檢查SELECT @@Version
您的數據庫確實是SQL 2008數據庫。擴展其他2個答案...
我試過在2005年SQL完全相同的命令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
說什麼?我會100%確定你是在你期望的版本...
我的另一個想法是compat 65級,其中can't be set explicitly in SQL Server 2005和以上似乎。我沒有任何遺留數據庫可供測試。
如果您使用的是SQL Sever 2008的SSMS,並不一定表示您連接到相應的數據庫。使用@@ version來檢查你連接的數據庫的版本,因爲SQL 2005使用:[ROW_NUMBER()OVER(ORDER BY ColName)]
@Gold:你有沒有解決這個問題? – 2009-08-03 14:23:40