135 votes

SQL Server signale "Nom de colonne invalide", mais la colonne est présente et la requête fonctionne dans le studio de gestion.

Je suis dans une impasse. J'ai une requête qui est générée par des C# code. La requête fonctionne correctement dans Microsoft SQL Server Management Studio lorsqu'ils sont exécutés sur la même base de données.

Cependant, lorsque mon code tente d'exécuter la même requête, j'obtiens la même erreur à propos d'une colonne invalide et une exception est levée. Toutes les requêtes qui font référence à cette colonne échouent.

La colonne en question a été récemment ajoutée à la base de données. Il s'agit d'une colonne de date appelée Incident_Begin_Time_ts .

Un exemple qui échoue est le suivant :

select * from PerfDiag 
where Incident_Begin_Time_ts > '2010-01-01 00:00:00';

D'autres requêtes telles que Select MAX(Incident_Being_Time_ts); échouent également lorsqu'ils sont exécutés dans le code parce qu'ils pensent que la colonne est manquante.

Des idées ?

0voto

LoMaPh Points 287

Dans mon cas, il semble que le problème soit dû à un étrange problème de mise en cache. Les solutions ci-dessus n'ont pas fonctionné.

Si votre code fonctionnait correctement et que vous avez ajouté une colonne à l'une de vos tables et que l'erreur "nom de colonne invalide" apparaît, et que les solutions ci-dessus ne fonctionnent pas, essayez ceci : Exécutez d'abord uniquement la section du code permettant de créer la table modifiée, puis exécutez l'ensemble du code.

0voto

Daniel Points 416

J'inclus cette réponse parce que c'était le premier résultat pour "invalid column name sql" sur google et je n'ai pas vu cette réponse ici. Dans mon cas, j'obtenais Invalid Column Name, Id1 parce que j'avais utilisé le mauvais id dans ma déclaration .HasForeignKey dans mon code Entity Framework C#. Une fois que je l'ai modifié pour qu'il corresponde à l'identifiant de l'objet .HasOne(), l'erreur a disparu.

0voto

cdabel Points 331

J'ai obtenu cette erreur lors de l'exécution d'une fonction scalaire utilisant une valeur de table, mais l'instruction Select dans la clause RETURN de ma fonction scalaire ne contenait pas la partie "FROM table" :facepalms :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X