Development Tip

이름으로 저장 프로 시저 찾기

yourdevel 2020. 10. 28. 21:13
반응형

이름으로 저장 프로 시저 찾기


SQL Server Management Studio 저장 프로 시저에서 이름 또는 이름의 일부로 찾을 수있는 방법이 있습니까? (활성 데이터베이스 컨텍스트에서)

도와 주셔서 감사합니다


당신이 사용할 수있는:

select * 
from 
   sys.procedures 
where 
   name like '%name_of_proc%'

코드가 필요한 경우 syscomments 테이블에서 볼 수 있습니다.

select text 
from 
    syscomments c
    inner join sys.procedures p on p.object_id = c.object_id
where 
    p.name like '%name_of_proc%'

업데이트 수정 :

ansi 표준 버전을 사용할 수도 있습니다.

SELECT * 
FROM 
    INFORMATION_SCHEMA.ROUTINES 
WHERE 
    ROUTINE_NAME LIKE '%name_of_proc%'

F7저장 프로 시저 목록을 표시 하는 개체 탐색기 세부 정보 ( ) 에 있다고 가정 하고 필터 단추를 클릭하고 이름 (또는 일부 이름)을 입력합니다.

대체 텍스트


이것은 sproc뿐만 아니라 테이블과 뷰에서도 작동합니다.

SELECT
    '[' + s.name + '].[' + o.Name + ']',
    o.type_desc
FROM
    sys.objects o
    JOIN sys.schemas s ON s.schema_id = o.schema_id
WHERE
    o.name = 'CreateAllTheThings' -- if you are certain of the exact name
    OR o.name LIKE '%CreateAllThe%' -- if you are not so certain

또한 중요하지 않은 데이터베이스 (예 : 이름으로 저장 프로 시저를 찾기 위해 쿼리가 필요한 데이터베이스)에서 유용한 스키마 이름을 제공합니다.


다음 쿼리를 사용할 수 있습니다.

SELECT 
    ROUTINE_CATALOG AS DatabaseName ,
    ROUTINE_SCHEMA AS SchemaName,
    SPECIFIC_NAME AS SPName ,
    ROUTINE_DEFINITION AS SPBody ,
    CREATED AS CreatedDate,
    LAST_ALTERED AS LastModificationDate
FROM INFORMATION_SCHEMA.ROUTINES
WHERE 
    (ROUTINE_DEFINITION LIKE '%%')
    AND 
    (ROUTINE_TYPE='PROCEDURE')
    AND
    (SPECIFIC_NAME LIKE '%AssessmentToolDegreeDel')

보시다시피 저장 프로 시저 본문 내에서도 검색 할 수 있습니다.


검색 상자의 개체 탐색기에서 백분율 문자 만 사용하면 SQL 삽입을 시도하는 매우 깔끔한 트릭이 있습니다. 그러면 모든 저장 프로 시저, 함수, 뷰, 테이블, 스키마, 인덱스를 검색합니다. :)

검색 패턴


저장 프로 시저 이름이 있고 그것이 속한 데이터베이스를 모르는 경우 다음을 사용합니다.

Use [master]
GO

DECLARE @dbname VARCHAR(50)   
DECLARE @statement NVARCHAR(max)

DECLARE db_cursor CURSOR 
LOCAL FAST_FORWARD
FOR  
--Status 48 (mirrored db)
SELECT name FROM MASTER.dbo.sysdatabases WHERE STATUS NOT LIKE 48 AND name NOT IN ('master','model','msdb','tempdb','distribution')  

OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @dbname  
WHILE @@FETCH_STATUS = 0  
BEGIN  

SELECT @statement = 'SELECT * FROM ['+@dbname+'].INFORMATION_SCHEMA.ROUTINES  WHERE [ROUTINE_NAME] LIKE ''%name_of_proc%'''+';'
print @statement

EXEC sp_executesql @statement

FETCH NEXT FROM db_cursor INTO @dbname  
END  
CLOSE db_cursor  
DEALLOCATE db_cursor

참고 URL : https://stackoverflow.com/questions/3574244/find-stored-procedure-by-name

반응형