태그 보관물: ssms

ssms

이름으로 저장 프로 시저 찾기 프로 시저에서 이름 또는 이름의 일부로

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


답변

SQL Server 버전 9.0 (2005)의 경우 아래 코드를 사용할 수 있습니다.

select *
from
syscomments c
inner join sys.procedures p on p.object_id = c.id
where
p.name like '%usp_ConnectionsCount%';