按名称查找存储过程

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

感谢帮助

您可以使用:

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 )中显示“存储过程”列表,请单击“filter”button并input名称(或部分名称)。

替代文字

这将适用于表格和视图(除其他外),而不仅仅是sprocs:

 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注入,在search框中的对象浏览器只是使用你的百分比字符,这将search一切存储过程,函数,视图,表,模式,索引…我厌倦了更多的思考:)

search模式

你可以使用这个查询:

 SELECT ROUTINE_CATALOG AS DatabaseName , ROUTINE_SCHEMA AS SchemaName, SPECIFIC_NAME AS SPName , ROUTINE_DEFINITION AS SPBody , CREATED AS CreatedDate, LAST_ALTERED AS LastModificationDate FROM INFORMATION_SCHEMA.ROUTINES WHERE (ROUTINE_DEFINITION LIKE '%%') AND (ROUTINE_TYPE='PROCEDURE') AND (SPECIFIC_NAME LIKE '%AssessmentToolDegreeDel') 

正如你所看到的,你也可以在存储过程的内部进行search。