【问题标题】:SQL Server stored prcedure definition is different with sys_modules.definitionSQL Server 存储过程定义与 sys modules.definition 不同
【发布时间】:2018-04-17 18:06:02
【问题描述】:
我有 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 + '%'
有人能告诉我为什么会这样吗?
这是我第二次遇到这个问题。
【问题讨论】:
标签:
sql-server
stored-procedures
module
sys
sysobjects
【解决方案1】:
使用 INFORMATION_SCHEMA.ROUTINES 并获取存储过程的 ROUTINE_DEFINITION 列
【解决方案2】:
如果您使用 sp_rename 并显式调用 in the documentation,则会发生这种情况
重命名存储过程、函数、视图或触发器不会
更改定义中对应对象名称的名称
sys.sql_modules 目录视图的列。因此,我们推荐
即 sp_rename 不能用于重命名这些对象类型。相反,放下
并使用新名称重新创建对象。
请注意,SSMS 对象资源管理器中的重命名功能实际上会调用此过程。