[MS-SQL] 프로시저 내부의 문자열 검색 (syscomments & sql_modules)
프로시저 내부의 문자열을 검색하는 방법은 과거 포스팅도 했듯 sys.syscomments로 간단하게 할 수 있다.
https://kaiaphas.tistory.com/55
하지만...
그렇다고 한다. 뭐 어쨌든 기능이 삭제되니 아래 sql_modules 로 변경하라는 뜻 같다.
하여 아래 내용으로 다시 포스팅 한다.
문자열 검색
SELECT
sm.object_id
, OBJECT_NAME(sm.object_id) AS object_name
, o.type
, o.type_desc
, sm.definition
FROM sys.sql_modules AS sm
JOIN sys.objects AS o ON sm.object_id = o.object_id
WHERE sm.definition LIKE '%검색문자열%'
ORDER BY o.type;
위와 같이 검색하면 된다.
objects 를 조인하여 type 을 가져오는데 type 의 설명은 type_desc 에 보여지며 정리하자면 아래와 같다.
AF = 집계 함수(CLR)
C = CHECK 제약 조건
D = DEFAULT(제약 조건 또는 독립 실행형)
F = FOREIGN KEY 제약 조건
FN = SQL 스칼라 함수
FS = 어셈블리(CLR) 스칼라 함수
FT = 어셈블리(CLR) 테이블 반환 함수
IF = SQL 인라인 테이블 반환 함수
IT = 내부 테이블
P = SQL 저장 프로시저
PC = 어셈블리(CLR) 저장 프로시저
PG = 계획 지침
PK = PRIMARY KEY 제약 조건
R = 규칙 (이전 스타일, 독립 실행형)
RF = 복제 필터 프로시저
S = 시스템 기본 테이블
SN = 동의어
SO = 시퀀스 개체
U = 테이블(사용자 정의)
V = 뷰
EC = 제약 조건
적용 대상: SQL Server 2012(11.x) 이상
SQ = 서비스 큐
TA = 어셈블리(CLR) DML 트리거
TF = SQL 테이블 반환 함수
TR = SQL DML 트리거
TT = 테이블 유형
UQ = UNIQUE 제약 조건
X = 확장 저장 프로시저
type 의 종류는 빨간색으로 표시한 것이 대부분 조회된다.