종종 특정 테이블을 사용하는 모든 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 도구를 활용하는 것이 권장된다.)
반응형
'DataBase > MSSQL' 카테고리의 다른 글
[MSSQL] 컬럼 수정시 ”Saving changes is not permitted.” 에러가 뜰경우 (0) | 2024.04.13 |
---|---|
[MSSQL] 특정 Table을 사용하는 Procedure 조회하기 (0) | 2024.04.13 |
[MSSQL] 대량의 Data를 DB에 삽입하는 방법 (0) | 2024.03.31 |
[MSSQL] MSSQL이란? (0) | 2023.05.21 |