출처 : https://stackoverflow.com/questions/14704105/search-text-in-stored-procedure-in-sql-server
디버깅을 위해 프로시저 내에서 문자열을 주로 테이블명을 기준으로 문자열을 찾게 되는데
간간히 사용하다 보니 이 구문을 외울 수 없다는게 함정
해당 프로시저를 생성해 두고
SSMS 키보드 단축키에 넣고 사용하면 나름 유용하다.
단 시스템 테이블 접근권한이 있는 사용자만 가능
결과 :
CREATE PROCEDURE SP_Search
@strFind AS varchar(MAX)
AS
BEGIN
SET NOCOUNT ON;
-- 모든 프로시저에서 문자열을 찾을떄
BEGIN
SELECT OBJECT_NAME(OBJECT_ID) SP_Name
,OBJECT_DEFINITION(OBJECT_ID) SP_Definition
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%'+@strFind+'%'
END
-- 모든 뷰에서 문자열을 찾을때
BEGIN
SELECT OBJECT_NAME(OBJECT_ID) View_Name
,OBJECT_DEFINITION(OBJECT_ID) View_Definition
FROM sys.views
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%'+@strFind+'%'
END
-- 모든 함수에서 문자열을 찾을때
BEGIN
SELECT ROUTINE_NAME Function_Name
,ROUTINE_DEFINITION Function_definition
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%'+@strFind+'%'
AND ROUTINE_TYPE = 'FUNCTION'
ORDER BY
ROUTINE_NAME
END
-- 모든 데이터베이스에서 문자열을 찾을때
BEGIN
SELECT t.name AS Table_Name
,c.name AS COLUMN_NAME
FROM sys.tables AS t
INNER JOIN sys.columns c
ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%'+@strFind+'%'
ORDER BY
Table_Name
END
END
'DB > SQLServer' 카테고리의 다른 글
프로시저에 TRY/CATCH 와 트랜잭션 (0) | 2024.09.04 |
---|---|
Poor Man's T-SQL Formatter SSMS 쿼리 들여쓰기 정리 (1) | 2024.08.29 |
비트 연산 (0) | 2021.05.28 |
DB에 속한 테이블 용량 및 사이즈를 알아보기 (0) | 2020.06.02 |
날짜 또는 시간 문자열 포맷 형식 (0) | 2020.06.01 |