Недопустимое имя объекта sql server - но таблицы перечислены в списке таблиц SSMS
Я пытаюсь создать Stored Procedure
для вновь созданной базы данных. Однако IntelliSense SSMS
не распознает более половины созданных таблиц.
Например, в то время как в левом столбце под таблицами у меня есть таблица dbo.Room
, когда я набираю "dbo.
" в новом окне запроса, эта таблица не отображается, фактически отображаются только 17 из 37 таблиц.
Я не вижу никакой разницы между таблицами, перечисленными intellisense, и теми, которые нет. Если я вручную ввожу dbo.Room, это подчеркивается с ошибкой
Неверное имя объекта 'dbo.Room'..
Я что-то упустил при настройке столов?
ОБНОВЛЕНИЕ: я попытался обновить список таблиц (несколько раз)
Ответы
Ответ 1
Попробуйте:
Edit → IntelliSense → Refresh Local Cache
Это должно обновить данные, кэшированные Intellisense, чтобы обеспечить поддержку заголовков и обнаружение ошибок перед выполнением.
ПРИМЕЧАНИЕ. Ваш курсор должен находиться в редакторе запросов, чтобы меню IntelliSense было видно.
Ответ 2
Ctrl + Shift + R также обновляет intellisense в студии управления 2008.
Ответ 3
После создания нового объекта SQL Server вновь созданный объект не обновляется в локальном кэше IntelliSence, и из-за этого он отображает красную строку под этим объектом. Поэтому вам просто нужно обновить локальный кэш SSMS IntelliSence и после его обновления IntelliSence
автоматически добавит вновь созданный объект в кеш, и красная строка исчезнет. попробуйте это
Edit -> IntelliSense -> Refresh Local Cache
или Ctrl + Shift + R
![enter image description here]()
Ответ 4
Убедитесь, что выбранная БД является той, где находится таблица. Я запускал скрипт на Master
. В моем случае мне пришлось переключиться на hr_db
.
![enter image description here]()
Ошибка новичка, но, может помочь кому-то.
Ответ 5
В моем случае кэш IntelliSense указывал информацию об объекте для совершенно другой базы данных. Если бы я нажал кнопку "Новый запрос" в SSMS, он откроет запрос к моему каталогу по умолчанию на сервере, и редактор запросов всегда будет использовать только эту базу данных. Обновление кеша ничего не изменило. Перезапуск SSMS ничего не изменил. Изменение базы данных ничего не изменило.
Я закончил создание запроса, щелкнув правой кнопкой мыши на базе данных, которую я действительно хотел использовать, и выбрав "Новый запрос" в этом контекстном меню. Теперь SSMS использует правильные объекты для IntelliSense.
Ответ 6
Вы уверены, что данная таблица существует?
Обновлен ли вид таблицы в Обозревателе объектов? Это можно сделать, щелкнув правой кнопкой мыши папку "tables" и нажав клавишу F5.
Вам также может потребоваться перезагрузить кеш Intellisense.
Это можно сделать, следуя маршруту меню: Изменить → IntelliSense → Обновить локальный кеш
Ответ 7
Решение:
- Выберите меню "Запрос",
- затем нажмите "Изменить базу данных".
- Выберите соответствующее имя базы данных.
Что это.
Ответ 8
Даже после установки SP3 на SQL Server 2008 Enterprise это все еще проблема. Ctrl + Shift + R, как все говорили, решили эту проблему для меня.
Ответ 9
Такая же проблема со мной, когда я использовал эту проблему синтаксиса.
Синтаксис:
Use [YourDatabaseName]
Your Query Here
Ответ 10
Решено для SSMS 2016.
Имел подобную проблему, но Intellisense не был в меню Правка.
Казалось, что это исправить, это включение и выключение Intellisens, щелкните правой кнопкой мыши на редакторе SQL и нажмите "Intellisense Enabled". Щелкните правой кнопкой мыши еще раз на "Intellisense Enabled", чтобы снова включить его. Ctr Q, я также это делаю.
Это решило проблему, а также я узнал, что Intellisense в меню Edit.
Ответ 11
Вы попробовали: щелкните правой кнопкой мыши базу данных и нажмите "Обновить"
Ответ 12
Я понимаю, что на этот вопрос уже был дан ответ, однако у меня было другое решение:
Если вы пишете script, где вы отбрасываете таблицы без их повторного создания, эти таблицы будут отображаться как отсутствующие, если вы попытаетесь ссылаться на них позже.
Примечание. Это не произойдет с script, который постоянно запускается, но иногда бывает проще иметь script с запросами повторного ввода, чем набирать их каждый раз.
Ответ 13
Мне просто пришлось закрыть SMSS и снова открыть его. Я попытался обновить локальный кэш, и это не сработало.
Ответ 14
Я столкнулся с проблемой с:
ODBC и SQL-Server-аутентификация в ODBC
а также
Firedac-соединение
Решение :
Я должен был установить Param MetaDefSchema на имя пользователя sqlserver:
FDConnection1.Params.AddPair('MetaDefSchema', self.FDConnection1.Params.UserName);
Википедия говорит:
MetaDefSchema = Имя схемы по умолчанию. Код времени разработки >> исключает & lt; & lt; !! имя схемы из объекта SQL-Server-Authenticatoinname, если оно равно MetaDefSchema.
без настройки автоматический кодер создает:
dbname.username.tablename → неверное имя объекта
С установкой MetaDefSchema в sqlserver-username:
dbname.tablename → работает!
Смотрите также embarcadero-doc по адресу:
http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_Microsoft_SQL_Server_(FireDAC)
Надеюсь, это поможет кому-то еще..
С уважением, Лутц