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 ?

2voto

Dévan Coetzee Points 94

Si vous utilisez des variables portant le même nom que votre colonne, il se peut que vous ayez oublié le marqueur de variable "@". Dans une instruction INSERT, elle sera détectée comme une colonne.

2voto

ApplePie Points 6798

Je viens de rencontrer exactement le même problème. J'ai renommé certaines colonnes aliasées dans une table temporaire qui est ensuite utilisée par une autre partie du même code. Pour une raison quelconque, cette opération n'a pas été prise en compte par SQL Server Management Studio, qui s'est plaint de noms de colonnes non valides.

J'ai simplement créé une nouvelle requête, copié-collé le code SQL de l'ancienne requête dans cette nouvelle requête et je l'ai exécutée à nouveau. Cela a semblé rafraîchir l'environnement correctement.

0voto

Иво Недев Points 780

Cela se produit également lorsque vous oubliez de modifier le ConnectionString et que vous interrogez une table qui n'a aucune idée des modifications que vous apportez localement.

0voto

Daniel Baker Points 14

J'ai eu ce problème avec une vue, mais le même code SQL fonctionnait parfaitement en tant que requête. En fait, SSMS a signalé quelques autres problèmes avec la vue, qu'il n'avait pas avec la requête. J'ai essayé d'actualiser, de fermer la connexion au serveur et d'y revenir, et de renommer les colonnes - rien n'a fonctionné. Au lieu de cela, j'ai créé la requête en tant que procédure stockée et j'ai connecté Excel à cette procédure plutôt qu'à la vue, ce qui a résolu le problème.

0voto

Deepak Kataria Points 159

Dans mon cas, j'essayais d'obtenir la valeur d'un mauvais ResultSet lors de l'interrogation de plusieurs instructions SQL.

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