2010-08-26 76 views
52

有没有什么办法可以在SQL Server Management Studio存储过程中按名称或部分名称找到? (主动数据库上下文)按名称查找存储过程

感谢您的帮助

回答

92

您可以使用:

select * 
from 
    sys.procedures 
where 
    name like '%name_of_proc%' 

,如果你需要的代码,你可以看看在syscomments表

select text 
from 
    syscomments c 
    inner join sys.procedures p on p.object_id = c.object_id 
where 
    p.name like '%name_of_proc%' 

编辑更新:

你也可以使用ansi标准版

SELECT * 
FROM 
    INFORMATION_SCHEMA.ROUTINES 
WHERE 
    ROUTINE_NAME LIKE '%name_of_proc%' 
+0

如果你想获得名称的sp的文本,使用“sp_helptext SPNAME”更容易 – Ali 2017-11-08 17:42:59

35

假设您在对象资源管理器详细信息(F7)显示存储过程的列表后,请点击过滤器按钮,并输入名称(或部分名称)。

alt text

+1

非常感谢你我不知道过滤器的事情,但我从来没有看过那个按钮。 – 2016-05-12 14:57:37

3

这将为表和视图(除其他事项外),以及工作,不只是存储过程:

SELECT 
    '[' + s.name + '].[' + o.Name + ']', 
    o.type_desc 
FROM 
    sys.objects o 
    JOIN sys.schemas s ON s.schema_id = o.schema_id 
WHERE 
    o.name = 'CreateAllTheThings' -- if you are certain of the exact name 
    OR o.name LIKE '%CreateAllThe%' -- if you are not so certain 

它也给你,这将是在任何非有用的模式名称微不足道的数据库(例如,您需要通过名称查询存储过程的查询)。

+1

将旧版应用程序从sql 2005迁移到2016我的脚本在'@errorMessage'附近得到'不正确的语法,这不是非常有帮助。当我在SSSM中运行相同的SQL时,它添加了“in procedure'some_name'”,但是在任何地方都没有这样的存储过程!原来,这是一个触发器,你的查询发现它。谢谢! – mickeyf 2017-03-30 19:37:55

0

非常巧妙的技巧我偶然发现尝试一些SQL注入,在搜索框中的对象浏览器只使用你的百分比字符,这将搜索一切存储过程,函数,视图,表格,索引...我累了更:)

Search Pattern

1

思维您可以使用此查询:

​​

正如你所看到的,你可以做存储过程也是身体内部搜索。

+0

@ardi,你再次来到这里! :<> – Ali 2017-11-08 17:45:20