web-dev-qa-db-fra.com

Nom d'objet non valide du serveur SQL - mais les tables sont répertoriées dans la liste des tables SSMS

Je tente de créer un Stored Procedure pour une base de données nouvellement créée. Cependant, la SSMS intellisense ne reconnaît pas plus de la moitié des tables créées.

Par exemple, dans la colonne de gauche sous les tables, j'ai une table dbo.Room, lorsque je tape "dbo." dans la nouvelle fenêtre de requête, cette table n'est pas répertoriée. En fait, seulement 17 sur 37 tables. sont répertoriés.

Je ne vois aucune différence entre les tables répertoriées par intellisense et celles qui ne le sont pas. Si je tape manuellement dbo.Room, il est souligné, avec une erreur de

Nom d'objet non valide 'dbo.Room' ..

Ai-je oublié quelque chose dans la préparation des tables?

UPDATE: J'ai essayé d'actualiser la liste des tables (plusieurs fois)

301
Richbits

Essayer:

Edit -> IntelliSense -> Refresh Local Cache

Cela devrait actualiser les données mises en cache par Intellisense pour assurer la prise en charge de la tête de frappe et la détection des erreurs avant exécution.

REMARQUE: Votre curseur doit être dans l'éditeur de requête pour que le menu IntelliSense soit visible.

644
Adam Robinson

Ctrl + Shift + R rafraîchit intellisense dans le studio de gestion 2008 également.

74
Zielyn

une fois que vous avez créé un nouvel objet SQL Server, votre objet nouvellement créé n'est pas mis à jour dans le cache local IntelliSence et, de ce fait, il affiche une ligne rouge sous cet objet. Il vous suffit donc d'actualiser le cache local SSMS IntelliSence et, une fois actualisé, IntelliSence ajoutera automatiquement le nouvel objet créé dans le cache et la ligne rouge disparaîtra. essaye ça

Edit -> IntelliSense -> Refresh Local Cache ou Ctrl + Shift + R

enter image description here

35
Nagaraj S

Assurez-vous que le DB sélectionné est celui où se trouve la table. Je courais le script sur Master. Dans mon cas, je devais passer à hr_db.

enter image description here

Erreur de recrue mais, pourrait aider quelqu'un.

20
Daniel Segura

Dans mon cas, le cache IntelliSense listait les informations sur les objets pour une base de données entièrement différente. Si je cliquais sur le bouton "Nouvelle requête" dans SSMS, cela ouvrirait une requête sur mon catalogue par défaut sur le serveur et cet éditeur de requête n'utiliserait toujours que cette base de données. Actualiser le cache n'a rien changé. Le redémarrage de SSMS n'a rien changé. Changer la base de données n'a rien changé.

J'ai fini par créer une requête en faisant un clic droit sur la base de données que je voulais réellement utiliser et en choisissant "Nouvelle requête" dans ce menu contextuel. Maintenant SSMS utilise les objets corrects pour IntelliSense.

18
Bacon Bits

Êtes-vous certain que la table en question existe?

Avez-vous actualisé la vue de table dans l'explorateur d'objets? Cela peut être fait en faisant un clic droit sur le dossier "tables" et en appuyant sur le bouton F5 clé.

Vous devrez peut-être aussi refaire le cache Intellisense.

Cela peut être fait en suivant le chemin du menu: Edition -> IntelliSense -> Actualiser le cache local

10
John Sansom

La solution est:

  • Cliquez sur le menu Requête,
  • puis cliquez sur 'Change Database'.
  • Sélectionnez votre nom de base de données approprié.

C'est ça.

8
Tono FRL

Même après l’installation du SP3 dans SQL Server 2008 Enterprise, le problème persiste. Ctrl+Shift+R comme tout le monde a dit résolu ce problème pour moi.

4
demmith

Même problème avec moi lorsque j'ai utilisé ce problème de syntaxe résolu.

Syntaxe:

Use [YourDatabaseName]
Your Query Here
4
user5093161

Résolu pour SSMS 2016.

Avait un problème similaire, mais Intellisense n'était pas dans le menu Edition.

Ce qui semblait résoudre le problème était d'activer et de désactiver Intellisens, faites un clic droit sur l'éditeur SQL, puis cliquez sur "Intellisense Enabled". Cliquez à nouveau avec le bouton droit sur 'Intellisense Enabled' pour le réactiver. Ctr Q, je le fais aussi.

Cela a résolu le problème, et je sais aussi que l’Intellisense est disponible dans le menu Edition.

3
Eric Yeoman

Je devais juste fermer SMSS et le rouvrir. J'ai essayé d'actualiser le cache local et cela n'a pas fonctionné.

1
stealthysnacks

avez-vous essayé: faites un clic droit sur la base de données, puis cliquez sur "actualiser"

1
KM.

Je me rends compte que cette question a déjà été répondue, cependant, j'avais une solution différente:

Si vous écrivez un script dans lequel vous supprimez les tables sans les recréer, ces tables seront manquantes si vous essayez de les référencer ultérieurement.

Remarque: cela ne se produira pas avec un script constamment exécuté, mais il est parfois plus facile de disposer d'un script contenant des requêtes à rappeler que de les saisir à chaque fois.

1
Troy Loberger