2010-07-15 2 views
1

저는 이전 프로젝트에 새로운 기능을 추가하려는 새로운 개발자입니다. 구현하려고하는 새 코드는 데이터베이스 테이블과 관련되어 있으므로 업데이트하거나 원래 테이블을 채우는 프로 시저를 찾고 있습니다.SQL 프로 시저를 쉽게 검색 할 수 있습니까?

하지만 50 개가 넘는 절차가 있습니다.

수동으로 모든 프로 시저를 열고 CTRL + F를 사용하여 원하는 용어를 검색하지 않으면 검색 방법에 대한 저장 프로 시저를 쉽게 검색 할 수 있습니까?

답변

3

, 당신이 (내 관리 스튜디오가 독일어 인 "제품보기 의존성을"테이블을 마우스 오른쪽 버튼으로 클릭하고 선택할 수 있습니다 ... 나는 그것이 정확히 "쇼라고하면 모르는 의존성 ").

이 테이블과 관련이있는 모든 개체를 볼 수있는 화면이 나타납니다.
저장 프로 시저가 나열되면이 테이블을 사용한다는 의미입니다.

+0

"뷰 종속성"이라고합니다. 비엘 덩크! 8 분 안에 답을 수락합니다. –

1

sys.syscomments보기를 사용하여 텍스트를 읽을 수 있습니다. 당신은 SQL Server Management Studio를 사용하는 경우

SELECT Distinct SO.Name, sc.text, so.type 
FROM sysobjects SO (NOLOCK) 
INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID 
AND SC.Text LIKE '%your_string%' 
ORDER BY SO.Name 
1

이 시도 :

SELECT OBJECT_NAME(id) 
    FROM syscomments 
    WHERE [text] LIKE '%foobar%' 
    AND OBJECTPROPERTY(id, 'IsProcedure') = 1 
    GROUP BY OBJECT_NAME(id) 

게시 된 다른 방법을 수행하지 않는 것 procs 저장을위한이에서만 검색 할 수 있습니다. MSDN의 한 syscomments에 따르면

...

는 데이터베이스 내의 각 뷰, 규칙, 디폴트, 트리거, CHECK 제약, DEFAULT 제약 조건, 저장 절차에 대한 항목을 포함합니다. 당신은 당신이에 관심이없는 다른 물건을 많이 얻을 것이다 저장 프로세서 수를 검색하도록 지정하지 않은 경우 그래서

. 다음

1
create procedure [dbo].[uspUtilitySearchText] 
(
    @txt varchar(2048) 
) 
AS 
SET NOCOUNT ON 

declare @srch varchar(3000) 

set @srch = '%' + @txt + '%' 

SELECT 
    o.type_desc AS ROUTINE_TYPE, 
    o.[name] AS ROUTINE_NAME, 
    m.definition AS ROUTINE_DEFINITION 
FROM sys.sql_modules AS m 
    INNER JOIN sys.objects AS o 
     ON m.object_id = o.object_id 
WHERE m.definition LIKE @srch 

exec uspUtilitySearchText 'tablename' 

이것은 주어진 텍스트에 대해 모든 데이터베이스 객체를 검색합니다.

1
Select * from syscomments where [text] like '%table_name%' 

또는 데이터베이스의 모든 비 데이터 객체를 스크립팅 한 다음 Grep Them을 스크립팅 할 수있는 프로그램을 사용하십시오.

관련 문제