Я отследил Хранимую процедуру, как показано в профилировщике SQL Server 2005.Он не найден, но работает.Почему?

StackOverflow https://stackoverflow.com/questions/85181

Вопрос

Это довольно странно.

У меня открыт мой профилировщик, и он, очевидно, показывает, что вызывается хранимая процедура.Я открываю базу данных и список SP, но SP не существует.Однако есть другой SP, чье имя такое же, за исключением того, что оно имеет префикс 'x'

Сопоставляет ли SQL Server 2005 имя SP с другим именем в целях безопасности?

Редактировать:Я выяснил, что это Синоним, что бы это ни было.

Это было полезно?

Решение

В общем случае, когда вы знаете, что объект существует, потому что он использовался в запросе, и вы не можете найти его в дереве объектов в Management Studio, вы можете сделать это, чтобы найти его.

select *
from sys.objects
where name = 'THE_NAME_YOU_WANT'

Я только что проверил, и это работает с синонимами.

Другие советы

Возможно, глупые вопросы, но на всякий случай...вы обновили список SP?Вы проверяли наличие хранимой процедуры с таким именем под другим владельцем?Если вы создали хранимую процедуру без указания владельца, то она может быть в списке под вашим управлением (или вообще отсутствовать, если список отфильтрован только по "dbo", например).

Возможно, у вас нет разрешения на просмотр всех объектов в базе данных

Добавляя к предыдущим ответам, это также может быть раздел "Системные хранимые процедуры", и если имя хранимой процедуры начинается с "sp_", это также может быть в главной базе данных.

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

select * from sys.objects where name = 'name of stored procedure'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top