2011-09-07 2 views
5

데이터베이스의 모든 저장 프로 시저를 검색하면 이름에 "항목"이 포함 된 프로 시저 만 검색하면됩니다. 어떤 아이디어?저장 프로 시저를 이름으로 찾는 방법은 무엇입니까?

나는이 주변에 땜질 된 적이 있지만 아직 확실히이 아니다 :

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

@Aaron는, 예 내가 Routine_Name을 의미 내가 인식하지 않았다 내가 쓸모 슈퍼 나은 대안 양도 수 있습니다 무엇을 제안. 나는 2 년 전에이 일을했다. 나는 여전히 적절할 것이라고 생각했다. 내 의견을 삭제하겠습니다. –

+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

관련 문제