对于一个存储过程,我有它的全部源代码。但是这个存储过程的名称已经丢失了。在这个数据库中,有数百个存储过程。
那么是否有一种方法可以通过使用其内容或使用其中任何变量来找到存储过程的名称?
这让我感到困惑。真诚地感谢任何帮助。
对于一个存储过程,我有它的全部源代码。但是这个存储过程的名称已经丢失了。在这个数据库中,有数百个存储过程。
那么是否有一种方法可以通过使用其内容或使用其中任何变量来找到存储过程的名称?
这让我感到困惑。真诚地感谢任何帮助。
试试这个:
select * from sysobjects where id in
(select id from syscomments where text like '%exec%')
order by [name]
这里的“exec”是你要搜索的文本。此查询还将搜索视图,仅供参考。
select o.name, c.text
from syscomments c
inner join sysobjects o on o.id = c.id
where c.text like '%<representative_line>%'
and o.type='P' -- this means filter procedures only
希望这样可以返回一些你可以手动检查的过程。
还有一种更易读且更易记的方法:
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%AlgunaPalabraQueTeAcuerdes%'
AND ROUTINE_TYPE='PROCEDURE'
这个方法至少在sql 2008及更高版本中有效。 Source
尝试使用此查询,它将获取包含给定单词或字段的过程名称
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(object_id) LIKE '%Any-Field (OR) WORD%'
select object_name(id) from syscomments where text like '%exec%'