按名称查找存储过程
有什么办法可以在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。