我有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 + '%'
有人能告诉我为什么会这样吗?
这是我第二次遇到这个问题。
答案 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列