9
votes

Pourquoi Row_Number () n'est-il pas reconnu dans SQL Server 2008?

pourquoi row_number () code> n'est pas reconnu comme un nom de la fonction dans SQL Server 2008?

J'essaie ceci P>

SELECT 
    ROW_NUMBER() AS Row, Lname
FROM MEN
GO


1 commentaires

@Gold: Avez-vous déjà eu ceci résolu?


4 Réponses :


27
votes

Vous semblez utiliser la mauvaise syntaxe. Voici un exemple utilisant la base de données AdventureWorks. XXX


2 commentaires

L'erreur serait "syntaxe incorrecte près de" Row_Number ", attendue" Over "", vient de tester sur SQL 2005.


GBN est correct: le message ERR est différent lorsque la fonction Row_Number est appelée sans autre clause. L'exception indique que le serveur n'est pas la version correcte.



4
votes

Vérifiez votre compatibilité de la base de données; Assurez-vous qu'il soit réglé sur 90 ou plus.

Il semble qu'il y ait au moins 2 choses qui sont hors de la marque ici.

  • La syntaxe de votre question est incorrecte, mais ne produirait pas l'erreur de fonction non reconnue.
  • SQL 2005 et 2008 prend en charge le Row_Number sur () Mots-clés / commande. Vous utilisez peut-être SQL 2008 Management Studio pour vous connecter à une machine SQL 2000? Vérifiez avec SELECT @@ version que votre DB est en effet un SQL 2008 DB.

0 commentaires

10
votes

Extension des 2 autres réponses ...

J'ai essayé exactement la même commande sur SQL 2005 avec 2 bases de données.

pour les deux niveaux de compatibilité 80 et 90, l'erreur est: xxx

Je ne peux que générer cette erreur sur une zone SQL 2000: xxx

Qu'est-ce que SELECT @@ version < / code> dire? Je ferais 100% sûr que vous êtes sur la version que vous attendez ...

Mon autre pensée est Compat Niveau 65 qui ne peut pas être défini explicitement dans SQL Server 2005 et ci-dessus semble. Et je n'ai pas de bases de données héritées qui se trouvent à tester.


0 commentaires

0
votes

Si vous utilisez SSMS indiquant SQL Sever 2008, ne signifie pas nécessairement que vous vous connectez à la DB respective. Utilisation @@ version Pour vérifier la version de la DB, vous êtes connecté à car SQL 2005 utilise: [Row_Number () sur (commande par colname)]


0 commentaires