Хранимая процедура не найдена - PullRequest
0 голосов
/ 16 июня 2010

Мы используем SQL Server 2008 в качестве нашей СУБД, и у нас есть база данных, владельцем которой является другой пользователь, а не dbo.

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

Если мы подключаемся к нашей базе данных, используя этого пользователя, и пытаемся выполнить следующее:

exec ourSP

, мы получаем ошибку «Не удалось найти нашего SP», но это прекрасно работает:

exec user.ourSP

Кто-нибудь знает, что может привести к такому странному поведению?

Ответы [ 2 ]

0 голосов
/ 29 июня 2010

Похоже, что если пользователь отмечен как SysAdmin в зоне безопасности сервера, он будет иметь имя пользователя dbo при установлении соединения с базой данных и будет рассматриваться как dbo.

0 голосов
/ 17 июня 2010

Проверьте схему по умолчанию для пользователя, под которым устанавливается соединение - возможно, с помощью запроса

select default_schema_name from sys.database_principals where name = '~user_name~'

Объекты ищутся в схеме по умолчанию пользователя, а затем в dbo.Никакие другие схемы не рассматриваются, если вы не назовете их явно, как вы делаете во втором запросе.

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

...