Хранимое определение prcedure в SQL Server отличается от sys_modules.definition
У меня есть 10 хранимых процедур, они отличаются от их определения в sys_modules. Я нахожу их с этим запросом:
select
b.definition, a.name
from
sysObjects a
left outer join
sys.sys_modules b on b.id = a.object_id
where
b.definition not like '%' + b.name + '%'
Может кто-нибудь сказать мне, почему это происходит?
Это второй раз, когда я столкнулся с этой проблемой.
2 ответа
Это происходит, если вы используете sp_rename
и явно вызвано в документации
Переименование хранимой процедуры, функции, представления или триггера не изменит имя соответствующего имени объекта в столбце определения представления каталога sys.sql_modules. Поэтому мы рекомендуем не использовать sp_rename для переименования этих типов объектов. Вместо этого удалите и заново создайте объект с его новым именем.
Обратите внимание, что функция переименования в обозревателе объектов SSMS фактически вызывает эту процедуру.
Используйте INFORMATION_SCHEMA.ROUTINES и получите столбец ROUTINE_DEFINITION для хранимых процедур