web-dev-qa-db-fra.com

SQL Server: Nom de colonne non valide

Je travaille sur la modification de la procédure stockée SQL Server existante. J'ai ajouté deux nouvelles colonnes à la table et modifié la procédure stockée afin de sélectionner également ces deux colonnes. Bien que les colonnes soient disponibles dans la table SQL Server continue à donner cette erreur:

Nom de colonne non valide 'INCL_GSTAMOUNT'

enter image description here

Quelqu'un peut-il me dire s'il vous plaît ce qui ne va pas ici?

57
Kamran Ahmed

Chaque fois que cela m'arrive, j'appuie sur Ctrl+Shift+R qui actualise intellisensename__, ferme la fenêtre de la requête (sauvegarde si nécessaire), puis lance une nouvelle session qui fonctionne généralement très bien.

151
Ric

Cela pourrait également arriver si vous mettez une chaîne entre guillemets plutôt que simple.

47
Harry

Cette erreur peut également se produire dans les instructions SQL encapsulées, par exemple.

DECLARE @tableName nvarchar (20) SET @tableName = 'GROC'

DECLARE @updtStmt nvarchar (4000)

SET @updtStmt = 'Mettre à jour le tbProductMaster_' + @ NomTable + 'SET department_str = '+ @tableName exec sp_executesql @updtStmt

Seulement pour découvrir qu'il manque des citations pour encapsuler le paramètre "@tableName" comme ci-dessous:

SET @updtStmt = 'Mettre à jour le tbProductMaster_' + @ NomTable + 'SET department_str = '' '+ @tableName +' '' '

Merci

3
Chagbert

Intellisense n’est pas actualisé automatiquement et vous ne devez pas compter entièrement sur

2
Madhivanan

J'obtenais la même erreur lors de la création d'une vue.

Imaginez une requête select qui s'exécute sans problème:

select id
from products

Tenter de créer une vue à partir de la même requête produirait une erreur:

create view app.foobar as
select id
from products

Msg 207, Niveau 16, Etat 1, Procédure à suivre, Ligne 2
Nom de colonne non valide 'id'.

Pour moi, il s’est avéré qu’il s’agissait d’une question délicate; notez que la vue est créée dans un schéma différent. La spécification du schéma de la table products a résolu le problème. Ie .. en utilisant dbo.products au lieu de juste products.

1
Molomby
  • Rafraîchissez vos tables.
  • Redémarrez le serveur SQL.
  • Cherchez les fautes d'orthographe dans Query.
0
Khizer Amin

J'avais un problème similaire. 

Le problème était qu'un déclencheur sur la table écrivait les modifications dans une table de journal d'audit. Des colonnes étaient manquantes dans la table du journal d'audit. 

0
William Monahan

Suivre la procédure m'a aidé à résoudre ce problème mais je ne sais pas pourquoi.

  1. Couper le code en question donné par les lignes du message
  2. Enregistrer la requête (par exemple dans un fichier)
  3. Collez le code là où il était avant
  4. Encore une fois enregistrer la requête

Même s'il semble que la même requête soit en cours d'exécution, cette erreur n'est pas générée.

0
Dreanaught

Je viens d'essayer. Si vous exécutez l'instruction pour générer votre table locale, l'outil acceptera que ce nom de colonne existe. Il suffit de marquer l’instruction de génération de table dans la fenêtre de votre éditeur et de cliquer sur Exécuter.

0
Anderas
There can be many things:
First attempt, make a select of this field in its source table;
Check the instance of the sql script window, you may be in a different instance;
Check if your join is correct;
Verify query ambiguity, maybe you are making a wrong table reference
Of these checks, run the T-sql script again

[Image of the script SQL][1]
  [1]: https://i.stack.imgur.com/r59ZY.png`enter code here
0
Junior Placido

avec rafraîchir la table ou fermer et ouvrir le serveur SQL ce travail 

0
behzad