Хранимое определение 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 для хранимых процедур

Другие вопросы по тегам