SQL server недопустимое имя объекта - но таблицы перечислены в списке таблиц SSMS

Я пытаюсь создать Stored Procedure для вновь созданной базы данных. Однако SSMS intellisense не распознает более половины созданных таблиц.

например, в левой колонке под таблицами у меня есть таблица dbo.Room, когда я типа "dbo. " в новом окне запроса эта таблица не указана, фактически перечислены только 17 из 37 таблиц.

Я не вижу разницы между таблицами, перечисленными intellisense и теми не. Если я вручную наберу dbo.Комната, подчеркнуто, с ошибкой

недопустимое Имя объекта ' dbo.Номер'..

Я что-то пропустил в настройке таблицы?

UPDATE: я пробовал обновить список таблиц (несколько раз)

13 ответов


попробуй:

редактировать ->IntelliSense ->Обновить Локальный Кэш

Это должно обновить данные, кэшированные Intellisense, чтобы обеспечить поддержку typeahead и обнаружение ошибок Перед выполнением.

Примечание: курсор должен находиться в Редакторе запросов, чтобы меню IntelliSense было видно.


Ctrl + Shift + R также обновляет intellisense в management studio 2008.


после создания нового объекта SQL Server вновь созданный объект не обновляется в локальном кэше IntelliSence, и из-за этого он показывает красную линию под этим объектом. Поэтому вам просто нужно обновить локальный кэш SSMS IntelliSence и после его обновления,IntelliSence автоматически добавит вновь созданный объект в кэш, и красная линия исчезнет. попробуйте это

Edit -> IntelliSense -> Refresh Local Cache или Ctrl + Shift + R

enter image description here


в моем случае кэш IntelliSense перечислял информацию об объекте для совершенно другой базы данных. Если я нажму кнопку "новый запрос" в SSMS, он откроет запрос к моему каталогу по умолчанию на сервере, и этот редактор запросов всегда будет использовать только эту базу данных. Обновление кэша ничего не изменило. Перезапуск SSMS ничего не изменил. Изменение базы данных ничего не изменило.

Я закончил создание запроса, щелкнув правой кнопкой мыши по базе данных, я на самом деле хотел использовать и выбрать "новый запрос" из этого контекстного меню. Теперь SSMS использует правильные объекты для IntelliSense.


вы уверены, что такая таблица существует?

вы обновили представление таблицы в Обозревателе объектов? Это можно сделать, щелкнув правой кнопкой мыши папку "таблицы" и нажав кнопку Ф5 ключ.

Вам также может понадобиться reresh кэш технологии IntelliSense.

Это можно сделать, следуя по маршруту меню: Edit - > IntelliSense - > обновить локальный кэш


решение:

  • щелкните запрос меню
  • затем нажмите "Изменить базу данных".
  • выберите соответствующее имя базы данных.

убедитесь, что выбранная БД, где таблица. Я запускал сценарий на Master. В моем случае, мне пришлось переключиться на hr_db.

enter image description here

ошибка новичка, но, может помочь кому-то.


даже после установки SP3 в SQL Server 2008 Enterprise это все еще " проблема." Ctrl+ Shift+R как все говорят, решил эту проблему для меня.


та же проблема со мной, когда я использовал эту синтаксическую проблему.

синтаксис:

Use [YourDatabaseName]
Your Query Here

решено для SSMS 2016.

была аналогичная проблема, но Intellisense не было в меню редактирования.

что, казалось, исправить это включение и выключение Intellisens, щелкните правой кнопкой мыши на Редакторе SQL и нажмите "Intellisense включен". Щелкните правой кнопкой мыши снова на "Intellisense Enabled", чтобы снова включить его. Ctr Q, я также это делаю.

Это решило проблему, а также я знаю, что получить Intellisense в меню редактирования.


вы пытались: щелкните правой кнопкой мыши базу данных и нажмите "Обновить"


Я понимаю, что на этот вопрос уже ответили, однако у меня было другое решение:

Если вы пишете сценарий, в котором вы отбрасываете таблицы, не воссоздавая их, эти таблицы будут отображаться как отсутствующие, если вы попытаетесь ссылаться на них позже.

Примечание: это не произойдет со скриптом, который постоянно выполняется, но иногда легче иметь скрипт с запросами на повторение, чем вводить их каждый раз.


Мне просто нужно было закрыть SMSS и снова открыть его. Я попытался обновить локальный кэш, и это не сработало.