按名称查找存储过程
您可以使用:
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%'
假设您在对象资源管理器详细信息(F7)显示存储过程的列表后,请点击过滤器按钮,并输入名称(或部分名称)。
非常感谢你我不知道过滤器的事情,但我从来没有看过那个按钮。 – 2016-05-12 14:57:37
这将为表和视图(除其他事项外),以及工作,不只是存储过程:
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
它也给你,这将是在任何非有用的模式名称微不足道的数据库(例如,您需要通过名称查询存储过程的查询)。
将旧版应用程序从sql 2005迁移到2016我的脚本在'@errorMessage'附近得到'不正确的语法,这不是非常有帮助。当我在SSSM中运行相同的SQL时,它添加了“in procedure'some_name'”,但是在任何地方都没有这样的存储过程!原来,这是一个触发器,你的查询发现它。谢谢! – mickeyf 2017-03-30 19:37:55
如果你想获得名称的sp的文本,使用“sp_helptext SPNAME”更容易 – Ali 2017-11-08 17:42:59