Недопустимое имя объекта SQL Server 2008 R2 - Сохраненная процедура
Я пытаюсь изменить существующую хранимую процедуру командой
ALTER 'name_of_stored "procedure'
однако название выделяется красным цветом, отмечая, что это недопустимый объект. Я могу выполнить команду успешно, однако я хочу знать, почему SQL Server 2008 R2 отмечает это как ошибку. ![enter image description here]()
Ответы
Ответ 1
Это SSMS, а не SQL Server. Если это ошибка в отношении механизма базы данных, вы это узнаете (он не выполнит команду успешно).
Решение
Вам нужно обновить кеш Intellisense (Ctrl + Shift + R). Или вы можете перейти в Edit → IntelliSense → Обновить локальный кэш.
Ответ 2
Intellisense не обновляется так быстро, как вы создаете новые объекты. Необходимо обновить кеш (Ctrl + Shift + R). Или, может быть, не полагайтесь на Intellisense и беспокоитесь только о том, если выполнение не выполняется.
Ответ 3
Создайте хранимую процедуру с помощью CREATE PROCEDURE
, а не ALTER PROCEDURE
.
Ответ 4
У меня была такая же проблема, и я увидел невероятное количество возможных ответов, некоторые довольно экзотические. К сожалению, я не видел эту страницу, прежде чем найти то, что сработало для меня. Я думал, что добавлю это, хотя считаю, что он служит тому же концу, что и освежающий Intellisense. Я знал, что сделал свою работу правильно, потому что хранимая процедура работала корректно, несмотря на ошибку, поэтому я, наконец, решил, что это не настоящая ошибка.
Я вышел из SSMS и снова вошел, и ошибка имени недействительного объекта больше не появилась. Я предполагаю, что обновил Intellisense.
Ответ 5
У меня была такая же проблема, проблема заключалась в том, что у меня был оператор select из хранимого proc, имя которого было похоже на имя таблицы, поэтому вместо
select * from Table_Test
Я писал это в хранимой процедуре
select * from Proc_Test --selecting from Stored proc, yikes!!
возможно, это помогает
Ответ 6
В моем случае на SQL Server 2014 Express значение имени хранимой процедуры, отображающее это сообщение об ошибке
Неверное имя объекта "SP_NAME"
даже если хранимая процедура уже создана и успешно выполнена. Но после включения IntelliSense ошибка была удалена, и каждый запрос хранимой процедуры работал нормально.
![enter image description here]()