如何在给定数据库的所有存储过程中全局搜索关键字?
我使用了以下内容,但我无法获得理想的结果......
SELECT name
FROM sysobjects
WHERE id IN
(
SELECT id
FROM syscolumns
WHERE name = 'loadStatus' COLLATE SQL_Latin1_General_CP1_CI_AS
)
SELECT name
FROM sysobjects
WHERE id IN
(
SELECT id
FROM syscolumns
WHERE name like '%loadStatus%' COLLATE SQL_Latin1_General_CP1_CI_AS
)
此致 -VAS
答案 0 :(得分:3)
只有sys.sql_modules
包含该过程的完整定义。像INFORMATION_SCHEMA.ROUTINES
这样的其他视图包含截断的定义。
select object_name(o.object_id), m.*
from sys.sql_modules m
join sys.objects o on m.object_id = o.object_id
where o.type= 'P'
and m.definition like N'%<keyword>%'
答案 1 :(得分:2)
请查看此链接 - http://www.sqlservercentral.com/scripts/T-SQL+Aids/31131/,看看是否有帮助。
链接文章中的SP由Prasad Bhogadi撰写,如下:
CREATE PROCEDURE SEARCHFORSTRING @SEARCHSTRING VARCHAR(100)
AS
SELECT DISTINCT(sysobjects.name)
FROM
sysobjects,syscomments
WHERE
sysobjects.id = syscomments.id
AND
sysobjects.type = 'P'
AND
sysobjects.category=0
AND
CHARINDEX(@SEARCHSTRING ,syscomments.text)>0
您可以使用它在数据库中创建SP或将其调整为一次性查询。