SQL Server存储的prcedure定义与sys_modules.definition不同

时间:2017-11-05 13:52:04

标签: sql-server stored-procedures module sys sysobjects

我有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 个答案:

答案 0 :(得分:3)

如果您使用In [312]: df Out[312]: Source Target Interaction 0 a z physical 1 b c physical 2 c x physical 3 d y physical 4 e b physical 5 b a physical In [313]: name_list Out[313]: ['a', 'b', 'c'] In [314]: df.loc[df['Source'].isin(name_list) & df['Target'].isin(name_list)] Out[314]: Source Target Interaction 1 b c physical 5 b a physical 并明确调出in the documentation

,就会发生这种情况
  

重命名存储过程,函数,视图或触发器不会   更改定义中相应对象名称的名称   sys.sql_modules目录视图的列。因此,我们建议   sp_rename不能用于重命名这些对象类型。相反,放弃   并使用新名称重新创建对象。

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

答案 1 :(得分:0)

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