2011-09-07 52 views
5

我只需要搜索我的数据库中的所有存储过程,找到名称中包含“item”的项。有任何想法吗?如何按名称查找存储过程?

我一直在摆弄围绕这个问题,但它是还没有应用:

SELECT DISTINCT OBJECT_NAME(ID) FROM SysComments WHERE Text LIKE '%Item%' 
+0

@Aaron,是的,我的意思ROUTINE_NAME,我并没有意识到什么,我认为可能是过时的和更好的替代品超割让。大约两年前我已经这样做了,我认为它仍然适合。我会删除我的评论。 –

+1

查看@ Martin的回答。如果你想要那些*定义*包含“item”的地方,使用'WHERE OBJECT_DEFINITION([object_id])LIKE'%item%';'。请不要使用syscomments,现在不再是2000年了。 :-) –

+0

[按名称查找存储过程]的可能重复(http://stackoverflow.com/questions/3574244/find-stored-procedure-by-name) – nathanchere

回答

4

为了找到那些包含在字符串“项目”。

select schema_name(schema_id) as [schema], 
     name 
from sys.procedures 
where name like '%Item%' 
2

This也可以帮你解决这个问题。它也适用于具有不同排序规则的数据库。你可以通过传递确切的程序名或部分名称来找到程序。

2

可以在Server 2008中使用新的查询:

use dbName 
go 

print object_definition(object_id('storedProcedureName')) 

你会得到程序的内容。

1

使用SQL,您只能使用%和_通配符。如果您想要更强大的搜索功能,可以使用SchemaCrawler。 SchemaCrawler可以使用匹配名称的正则表达式来搜索例程。您甚至可以使用正则表达式在例程定义中进行搜索。

Sualeh Fatehi,SchemaCrawler