2011-09-07 33 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