Недійсне ім'я об’єкта сервера sql - але таблиці вказані у списку таблиць SSMS


336

Я намагаюся створити Stored Procedureнову базу даних. Однак SSMSінтелігенція не розпізнає більше половини створених таблиць.

Наприклад, тоді як у лівій колонці під таблицями у мене є таблиця dbo.Room, коли я набираю " dbo." у новому вікні запитів, ця таблиця не перерахована, насправді лише 17 з 37 таблиць.

Я не бачу різниці між таблицями, переліченими інтелісенсом, і тими, які немає. Якщо я вручу вручну dbo.Room, він підкреслений, з помилкою

Недійсна назва об’єкта 'dbo.Room' ..

Я щось пропустив у налаштуванні таблиць?

ОНОВЛЕННЯ: Я спробував оновити список таблиць (кілька разів)


11
Відповідь, яка працює: [DatabaseName].[Schema].[TableName] ТАК: Недійсна назва об’єкта sql
Іван Чау

Відповіді:


703

Спробуйте:

Edit-> IntelliSense->Refresh Local Cache

Це має оновити дані, кешовані Intellisense, щоб забезпечити підтримку typehahead та виявлення помилок перед виконанням.

ПРИМІТКА: Ваш курсор повинен бути в редакторі запитів, щоб меню IntelliSense було видимим.


8
Чи періодично оновлюється Intellisense / SSMS? Або це завжди повинен бути ручним процесом? (У мене є здогадки на основі SSMS у 2005 році, але завжди можна сподіватися.)
Філіп Келлі

37
неймовірно, що у 2012 році вам потрібно це зробити. Чи не могли вони оновлювати Intellisense кожні кілька секунд автоматично?
Метью Лок

6
Це може зажадати натискання на базу даних та витягування визначень таблиці / перегляду кожні кілька секунд.
jinglesthula

8
ПРИМІТКА: Ваш курсор повинен бути в редакторі запитів, щоб меню IntelliSense було видимим.
bradlis7

5
@jinglesthula: Це врятувало б мене, потрапивши на сервер бази даних!
Павло

80

Ctrl+ Shift+ Rоновлює інтелігенцію і в студії управління 2008.


У мене немає цієї функції ... коли я натискаю ctrl + shift + R, нічого не змінюється
Ібрагім Амер

4
@IbrahimAmer Ваш курсор повинен бути в редакторі запитів, щоб доступна опція меню Intellisense. Якщо параметр меню інтелігенції недоступний, ярлик не зробить нічого.
Рейчел

Він також працює для T-SQL в SQL Server Management Studio 2014
Vahid Amiri

44

Переконайтеся, що вибрана БД є тією, де знаходиться таблиця. Я запускав Сценарій далі Master. У моєму випадку мені довелося перейти на hr_db.

введіть тут опис зображення

Початкова помилка, але може комусь допомогти.


4
Я не впевнений, що це помилка новобранця, якщо бути чесним, тому що, коли ви знову підключаєте сервер, він чомусь переходить до "майстра" без очевидних причин. :)
Chris Rae

Якби це було так, і запит не повністю кваліфікував назви таблиць, код не виконується. Я вважаю, що ОП описувало помилкове позитивне виявлення помилок, коли описана вами проблема не була чинником. (Звичайно, я вже виключав таку можливість, коли я пішов шукати і
заводився

Саме моє питання. Немає вказівки з SMS, що це змінило контекст бази даних чи будь-яку іншу підказку.
Даніель Блек

1
@ChrisRae: Це тому master, що встановлено як база даних за замовчуванням для входу користувачів. Просто змініть це за допомогою sp_defaultdbіншої бази даних, щоб інша база даних була вибрана під час входу в Security > Logins > your user login > Properties > Default database
SSMS

36

щойно ви створюєте новий об’єкт SQL Server, ваш щойно створений об’єкт не оновлюється в локальному кеші IntelliSence і завдяки цьому він показує червону лінію під цим об’єктом. Тому вам просто потрібно оновити локальний кеш SSMS IntelliSence, і як тільки ви оновите його, IntelliSenceавтоматично додайте новостворений об’єкт у кеш, і червона лінія зникне. спробуйте це

Edit -> IntelliSense -> Refresh Local Cache або Ctrl+ Shift+R

введіть тут опис зображення


1
У мене немає цієї функції ... коли я натискаю клавішу ctrl + shift + R, нічого не змінюється
Ібрагім Амер

4
@IbrahimAmer Ваш курсор повинен бути в редакторі запитів, щоб доступна опція меню Intellisense. Якщо параметр меню інтелігенції недоступний, ярлик не зробить нічого.
Рейчел

18

У моєму випадку кеш IntelliSense перераховував інформацію про об'єкти для зовсім іншої бази даних. Якщо я натиснув кнопку "Новий запит" у SSMS, вона відкриє запит до мого каталогу за замовчуванням на сервері, і цей редактор запитів завжди використовував би лише цю базу даних. Оновлення кеша нічого не змінило. Перезапуск SSMS нічого не змінив. Зміна бази даних нічого не змінила.

Я створив запит, клацнувши правою кнопкою миші на базі даних, яку я насправді хотів використати, та вибравши "Новий запит" у цьому контекстному меню. Тепер SSMS використовує правильні об'єкти для IntelliSense.


3
Так було і в моєму випадку. Дякую, що поділились.
Behrooz Karjoo

1
ВИКОРИСТИТИ datbaseName GO перед запитом також працює в налаштуванні контексту
Behrooz Karjoo

@BehroozKarjoo Так, я спробував це. Здається, це не завжди працює. Якби я міг її відтворити, я би поставив це на Microsoft Connect або щось подібне. Я впевнений, що вони відзначать його як WONTFIX або щось настільки ж дратує, але я повідомив би про це.
Шматочки бекону

Працювали ідеально! Дякую! :)
Шон Стайнс

Перезавантажте SSMS і клацніть правою кнопкою миші новий запит, який працював на мене.
Хіца

10

Ви впевнені, що таблиця, про яку йдеться, існує?

Ви оновили подання таблиці в Провіднику об’єктів? Це можна зробити, натиснувши правою кнопкою миші папку «таблиці» та натиснувши F5клавішу.

Вам також може знадобитися оновити кеш Intellisense.

Це можна зробити, дотримуючись маршруту меню: Правка -> IntelliSense -> Оновити локальний кеш


7

Рішення таке:

  • Клацніть меню Запит,
  • потім натисніть "Змінити базу даних".
  • Виберіть відповідне ім'я бази даних.

Це воно.


6

Та сама проблема зі мною, коли я використовував цю проблему синтаксису.

Синтаксис:

Use [YourDatabaseName]
Your Query Here

4

Навіть після встановлення SP3 на SQL Server 2008 Enterprise це все ще є "проблемою". Ctrl+ Shift+ Rяк усі, хто говорив, вирішив цю проблему для мене.


У мене немає цієї функції ... коли я натискаю клавішу ctrl + shift + R, нічого не змінюється
Ібрагім Амер

@IbrahimAmer Ваш курсор повинен бути в редакторі запитів, щоб доступна опція меню Intellisense. Якщо параметр меню інтелігенції недоступний, ярлик не зробить нічого.
Рейчел

3

Вирішено для SSMS 2016.

Виникла аналогічна проблема, але Intellisense не було в меню Правка.

Що, здавалося, це виправило, це включення та вимкнення Intellisens, клацніть правою кнопкою миші на редакторі SQL та натисніть "Включено Intellisense". Клацніть ще раз правою кнопкою миші на "Intellisense Enabled", щоб знову ввімкнути її. Ctr Q, я також це роблю.

Це вирішило проблему, а також я знаю, що Intellisense надходить у меню «Правка».


2

Мені просто довелося закрити SMSS і знову відкрити його. Я спробував Refresh Local Cache, і це не вийшло.


1

ви намагалися: клацніть правою кнопкою миші базу даних та натисніть "оновити"


Так, я спробував це, я впевнений, що він є, я можу додавати записи та змінювати і т.д. Я спробую перезавантажити.
Річбіт

1

Я усвідомлюю, що на це питання вже відповіли, проте у мене було інше рішення:

Якщо ви пишете сценарій, куди ви скидаєте таблиці, не відтворюючи їх, ці таблиці відображатимуться як відсутні, якщо ви спробуєте посилатися на них пізніше.

Примітка. Це не відбудеться зі сценарієм, який постійно виконується, але іноді простіше мати сценарій із запитами на перегляд, ніж вводити їх кожен раз.


0

Я зіткнувся з проблемою з: ODBC та SQL-Server-аутентифікація в ODBC та Firedac-Connection

Рішення: мені довелося встановити Param MetaDefSchema на sqlserver ім'я користувача: FDConnection1.Params.AddPair ('MetaDefSchema', self.FDConnection1.Params.UserName);

Wikidoc sais: MetaDefSchema = Назва схеми за замовчуванням. Код часу дизайну >> виключає << !! ім'я схеми від об'єкта SQL-Server-Authenticatoinname, якщо воно дорівнює MetaDefSchema.

без встановлення, автоматичний кодер створює: dbname.username.tablename -> недійсне ім'я об'єкта

Якщо встановити MetaDefSchema на sqlserver-ім'я користувача: dbname.tablename -> працює!

Дивіться також embarcadero-doc за адресою: http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_Microsoft_SQL_Server_(FireDAC)

Сподіваюся, це допомагає комусь іншому ..

з повагою, Лутц


0

У студії даних для блакитного стиску натисніть "cmd + shift + p" і введіть "intellisense", тоді ви побачите можливість оновити кеш інтеліссенса.


0

Не забудьте створити свої міграції після написання моделей

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.