Warum wird ROW_NUMBER () in SQL Server 2008 nicht erkannt?

7

Warum wird ROW_NUMBER() in SQL Server 2008 nicht als Funktionsname erkannt?

Ich versuche das

%Vor%

und ich bekomme diesen Fehler:

  

Mdg 195, Ebene 15, Staat 10, Linie 1   'ROW_NUMBER' ist nicht anerkannt   Funktionsname.

    
Gold 25.07.2009, 14:17
quelle

4 Antworten

26

Sie scheinen die falsche Syntax zu verwenden. Hier ist ein Beispiel, das die AdventureWorks-Datenbank verwendet.

%Vor%     
John Sansom 25.07.2009, 14:20
quelle
10

Erweitere die anderen 2 Antworten ...

Ich habe den gleichen Befehl in SQL 2005 mit 2 Datenbanken ausprobiert.

Bei beiden Kompatibilitätsebenen 80 und 90 lautet der Fehler:

%Vor%

Ich kann diesen Fehler nur in einer SQL 2000-Box erzeugen:

%Vor%

Was sagt SELECT @@version ? Ich würde 100% sicher sein, dass Sie die Version haben, die Sie erwarten ...

Mein anderer Gedanke ist compat level 65, das nicht explizit in SQL Server 2005 festgelegt werden kann > und darüber scheint es. Und ich habe keine Legacy-Datenbanken, die herumliegen, um zu testen.

    
gbn 25.07.2009 18:40
quelle
4

Überprüfen Sie Ihre Datenbankkompatibilität; Stellen Sie sicher, dass es auf 90 oder höher eingestellt ist.

Es scheint, dass es mindestens zwei Dinge gibt, die hier nicht in Frage kommen.

  • Die Syntax in Ihrer Frage ist falsch, würde aber nicht den nicht erkannten Funktionsfehler erzeugen.
  • SQL 2005 und 2008 unterstützen den ROW_NUMBER OVER() keywords / -Befehl. Verwenden Sie SQL 2008 Management Studio möglicherweise, um eine Verbindung zu einem SQL 2000-Computer herzustellen? Überprüfen Sie mit SELECT @@Version , dass Ihre DB tatsächlich eine SQL 2008 DB ist.
p.campbell 25.07.2009 14:24
quelle
0

Wenn Sie SSMS verwenden, das SQL Server 2008 sagt, bedeutet das nicht unbedingt, dass Sie mit der entsprechenden Datenbank verbunden sind. Verwenden Sie @@ Version, um die Version der Datenbank zu überprüfen, mit der Sie verbunden sind, da SQL 2005 Folgendes verwendet: [ROW_NUMBER () OVER (ORDER BY ColName)]

    
gtc108 16.01.2015 16:28
quelle