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)
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.
Ctrl + Shift + R rafraîchit intellisense dans le studio de gestion 2008 également.
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
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.
Ê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
La solution est:
C'est ça.
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.
Même problème avec moi lorsque j'ai utilisé ce problème de syntaxe résolu.
Syntaxe:
Use [YourDatabaseName]
Your Query Here
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.
Je devais juste fermer SMSS et le rouvrir. J'ai essayé d'actualiser le cache local et cela n'a pas fonctionné.
avez-vous essayé: faites un clic droit sur la base de données, puis cliquez sur "actualiser"
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.