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 列
我有 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 列