Хранимая процедура не найдена
Мы используем SQL Server 2008 в качестве нашей СУБД, и у нас есть база данных, в которой владельцем является другой пользователь, а не dbo.
Проблема в том, что на одном компьютере хранимая процедура не может быть запущена, если не указан ее владелец.
Если мы подключимся к нашей базе данных с помощью этого пользователя и попытаемся выполнить следующее:
exec ourSP
мы получаем ошибку "не удалось найти ourSP", но она работает нормально:
exec user.ourSP
Кто-нибудь знает, что может привести к такому странному поведению?
2 ответа
Похоже, что если пользователь отмечен как SysAdmin в области безопасности сервера, у него будет имя пользователя dbo при установлении соединения с базой данных, и он будет рассматриваться как dbo.
Проверьте схему по умолчанию для пользователя, под которым устанавливается соединение - возможно, с помощью запроса
select default_schema_name from sys.database_principals where name = '~user_name~'
Объекты ищутся в схеме пользователя по умолчанию, а затем в dbo. Никакие другие схемы не рассматриваются, если вы не назовете их явно, как вы делаете во втором запросе.
Исходя из этого, представляется вероятным, что а) пользователь не настроен правильно или б) вы не подключаетесь как ожидаемый пользователь.