DataBase/MSSQL

[SSMS] 특정 테이블을 사용하는 모든 Procedure 찾기

범데이 2024. 1. 18. 19:28

종종 특정 테이블을 사용하는 모든 Stored Procedure를 찾는 일은 데이터베이스 유지 보수 및 의존성 분석에 중요하다.

 

SQL Server에서 이를 수행하기 위해 다음과 같은 Procedure를 작성할 수 있다.

CREATE PROCEDURE FindProceduresUsingTable
    @TableName NVARCHAR(128)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT
        OBJECT_SCHEMA_NAME(o.object_id) AS SchemaName,
        o.name AS ProcedureName
    FROM
        sys.objects o
    INNER JOIN
        sys.sql_modules m ON o.object_id = m.object_id
    WHERE
        m.definition LIKE '%' + @TableName + '%'
        AND o.type = 'P'; -- 필요에 따라 다른 객체 유형을 추가로 고려할 수 있습니다.
END;

이 Procedure는 특정 테이블을 사용하는 모든 Procedure의 스키마 이름과 Procedure이름을 반환한다.

 

sys.sql_modules 뷰를 사용하여 프로시저의 정의에서 해당 테이블 이름이 포함된 경우를 찾는다.

 

 

실행 예시:

EXEC FindProceduresUsingTable 'YourTableName';

위 코드에서 'YourTableName'을 찾고자 하는 실제 테이블 이름으로 대체하면 된다.

 

(이 방법은 테이블 이름을 기반으로 한 텍스트 검색이므로 정확하지 않을 수 있다. 보다 정확한 의존성 분석을 위해서는 데이터베이스 전문 도구나 Third party 도구를 활용하는 것이 권장된다.)

반응형