<text>가 포함 된 저장 프로시 저는 어떻게 찾습니까? 이름 또는

데이터베이스 필드 이름 또는 변수 이름이 포함 된 저장 프로 시저에 대해 SQL Server 2008을 검색해야합니다.



답변

SELECT ROUTINE_NAME, ROUTINE_DEFINITION
    FROM INFORMATION_SCHEMA.ROUTINES
    WHERE ROUTINE_DEFINITION LIKE '%Foo%'
    AND ROUTINE_TYPE='PROCEDURE'

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

SELECT OBJECT_NAME(object_id)
    FROM sys.sql_modules
    WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1
    AND definition LIKE '%Foo%'


답변

자신의 사본을 잡아 무료 레드 게이트 SQL 검색 도구와 SQL 서버에서 검색을 즐기는 시작! 🙂

여기에 이미지 설명을 입력하십시오

훌륭하고 매우 유용한 도구입니다. 그렇습니다! 모든 종류의 사용에 대해 완전히 무료입니다.


답변

ApexSQL에서 무료 SSMS 플러그인 인 ApexSQL Search를 사용해 볼 수도 있습니다 .

여기에 이미지 설명을 입력하십시오


답변

나는 카 시프의 대답을 받아들이고 그들 모두를 연합시켰다. 이상하게도 때로는 선택 중 하나에서 결과를 찾았지만 다른 하나에서는 그렇지 않았습니다. 안전을 위해 무언가를 찾을 때 3 개를 모두 실행합니다. 도움이 되었기를 바랍니다:

DECLARE @SearchText varchar(1000) = 'mytext';

SELECT DISTINCT SPName
FROM (
    (SELECT ROUTINE_NAME SPName
        FROM INFORMATION_SCHEMA.ROUTINES
        WHERE ROUTINE_DEFINITION LIKE '%' + @SearchText + '%'
        AND ROUTINE_TYPE='PROCEDURE')
    UNION ALL
    (SELECT OBJECT_NAME(id) SPName
        FROM SYSCOMMENTS
        WHERE [text] LIKE '%' + @SearchText + '%'
        AND OBJECTPROPERTY(id, 'IsProcedure') = 1
        GROUP BY OBJECT_NAME(id))
    UNION ALL
    (SELECT OBJECT_NAME(object_id) SPName
        FROM sys.sql_modules
        WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1
        AND definition LIKE '%' + @SearchText + '%')
) AS T
ORDER BY T.SPName


답변

스키마가 필요한 경우 :

SELECT   DISTINCT SCHEMA_NAME(o.schema_id),o.name,[text]
FROM     syscomments AS c
         INNER JOIN sys.objects AS o ON c.id = o.[object_id]
         INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE    text LIKE '%foo%'
ORDER BY  SCHEMA_NAME(o.schema_id),o.name 


답변

SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%FieldName%'
AND ROUTINE_TYPE='PROCEDURE'


답변

위의 예제를 시도했지만 4000자를 넘지 않고 조금 수정하고 전체 저장 프로 시저 정의를 얻을 수있었습니다. 아래의 업데이트 된 스크립트를 참조하십시오-

SELECT SCHEMA_NAME(O.SCHEMA_ID) [SCHEMA_NAME], O.NAME, OBJECT_DEFINITION(OBJECT_ID) TEXT
FROM   SYSCOMMENTS AS C
       INNER JOIN SYS.OBJECTS AS O ON C.ID = O.[OBJECT_ID]
       INNER JOIN SYS.SCHEMAS AS S ON O.SCHEMA_ID = S.SCHEMA_ID
WHERE  OBJECT_DEFINITION(OBJECT_ID) LIKE '%FOO%'
ORDER BY  SCHEMA_NAME(O.SCHEMA_ID), O.NAME