SQL 服务器存储过程定义与 sys_modules.definition 不同

SQL Server stored prcedure definition is different with 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 + '%'

有人能告诉我为什么会这样吗?

这是我第二次遇到这个问题。

如果您使用 sp_rename 并且被明确调出 in the documentation

,就会发生这种情况

Renaming a stored procedure, function, view, or trigger will not change the name of the corresponding object name in the definition column of the sys.sql_modules catalog view. Therefore, we recommend that sp_rename not be used to rename these object types. Instead, drop and re-create the object with its new name.

请注意,SSMS 对象资源管理器中的重命名功能实际上会调用此过程。

使用 INFORMATION_SCHEMA.ROUTINES 并获取存储过程的 ROUTINE_DEFINITION 列