Не удается найти объект "XXX", так как он не существует или у вас нет разрешения - PullRequest
12 голосов
/ 21 октября 2009

Я получаю следующую ошибку при вызове хранимой процедуры:

Не удается найти объект "XXX", так как он не существует или у вас нет разрешения.

Я проверил базу данных, и SP там с правильными разрешениями, но я все еще получаю ошибку.

Есть предложения?

Ответы [ 10 ]

10 голосов
/ 06 августа 2013

Я обнаружил, что пропустил слово "GO" после "END" в моем сохраненном процессе. Изменение Proc и добавление обратно GO устранили эту проблему для меня.

4 голосов
/ 30 октября 2009

Хорошо, вот что случилось. Перед концом SP был специальный символ, поэтому он был неполным, но все же действительным, каким-то образом.

Так что я мог видеть SP и увидеть разрешения для него, но я не смог запустить его. Поэтому для решения этой проблемы мне пришлось скопировать текст из SQL Management Studio и вставить его в Блокнот, затем удалить специальный символ, затем скопировать и вставить его обратно в SQL Management Studio и запустить сценарий изменения.

Очень странно, как персонаж попал туда!

2 голосов
/ 06 августа 2014

Я тоже с этим сталкиваюсь. В моем случае я дал разрешение на выполнение сразу после создания хранимой процедуры. И между этими двумя утверждениями нет «GO». Я добавил GO, и это работает.

2 голосов
/ 12 октября 2012

Аналогично отмеченному ответу: Последней строкой моей хранимой процедуры была строка, которая давала разрешение хранимой процедуре запускаться от имени соответствующего пользователя - вероятно, добавлена ​​туда, когда я сгенерировал скрипт.

Удаление того (или, возможно, прикрепленного скрытого персонажа) удалось исправить.

«XXX» - это имя хранимой процедуры, которую я успешно вызвал (она внесла желаемое изменение), но которая дала мне эту ошибку.

1 голос
/ 21 октября 2009

Учетная запись, которую вы используете при вызове хранимой процедуры, не должна совпадать с учетной записью, которую вы используете для ее проверки. Убедитесь, что учетная запись, которую вы используете для запуска sproc, имеет доступ к объекту.

0 голосов
/ 07 января 2019

Даже после добавления 'GO' проблема не была исправлена ​​для меня. Затем удалил оператор UPDATE STATISTICS [Table_name]. Тогда моя проблема была исправлена.

0 голосов
/ 11 февраля 2016

На сервере Microsoft SQL выберите объект в проводнике объектов, с которым вы хотите работать, щелкните его правой кнопкой мыши, а затем выполните команду «Сценарий [объект] как», чтобы получить сценарий, необходимый для успешного выполнения операции без получения эта ошибка

0 голосов
/ 19 июня 2015

Использование 'GO' также исправило проблему для меня. Это сводило меня с ума, после нескольких падений и проверки прав доступа для пользователей и схемы, это то, что наконец помогло.

0 голосов
/ 21 октября 2009

А также другие ответы о схеме / безопасности и т. Д .:

  • у тебя где-нибудь есть ДЕНИ?
  • регистрозависимые имена объектов и использование «неправильного» имени?
  • неверный контекст базы данных? например, OtherDB.dbo.Myproc
0 голосов
/ 21 октября 2009

Всегда используйте префикс dbo. (или другую схему) как при создании, так и при доступе к объектам.

Я недавно писал об этой самой теме:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...