SQL Server 데이터베이스의 모든 저장 프로 시저 이름을 반환 할 수있는 쿼리
쿼리에서 시스템 저장 프로 시저를 제외 할 수 있으면 훨씬 도움이됩니다.
답변
Mike가 말했듯이 가장 좋은 방법은을 사용하는 것 information_schema
입니다. master 데이터베이스에 있지 않으면 시스템 저장 프로 시저가 반환되지 않습니다.
SELECT *
FROM DatabaseName.INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
어떤 이유로 master 데이터베이스에 비 시스템 저장 프로 시저가있는 경우 쿼리를 사용할 수 있습니다 (MOST 시스템 저장 프로 시저가 필터링 됨).
SELECT *
FROM [master].INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
AND LEFT(ROUTINE_NAME, 3) NOT IN ('sp_', 'xp_', 'ms_')
답변
SELECT name,
type
FROM dbo.sysobjects
WHERE (type = 'P')
답변
“바람직한”방법은 information_schema 테이블을 사용하는 것으로 이해합니다.
select *
from information_schema.routines
where routine_type = 'PROCEDURE'
답변
다음은 선택한 데이터베이스의 모든 절차를 반환합니다
SELECT * FROM sys.procedures
답변
이 쿼리를 사용하여 저장 프로 시저 및 함수를 얻을 수 있습니다.
SELECT name, type
FROM dbo.sysobjects
WHERE type IN (
'P', -- stored procedures
'FN', -- scalar functions
'IF', -- inline table-valued functions
'TF' -- table-valued functions
)
ORDER BY type, name
답변
SQL Server 2005를 사용하는 경우 다음이 작동합니다.
select *
from sys.procedures
where is_ms_shipped = 0
답변
아래 쿼리 중 하나를 사용하여 하나의 데이터베이스에서 저장 프로 시저 목록을 찾을 수 있습니다.
Query1 :
SELECT
*
FROM sys.procedures;
Query2 :
SELECT
*
FROM information_schema.routines
WHERE ROUTINE_TYPE = 'PROCEDURE'
모든 데이터베이스에서 모든 SP 목록을 찾으려면 아래 쿼리를 사용할 수 있습니다.
CREATE TABLE #ListOfSPs
(
DBName varchar(100),
[OBJECT_ID] INT,
SPName varchar(100)
)
EXEC sp_msforeachdb 'USE [?]; INSERT INTO #ListOfSPs Select ''?'', Object_Id, Name FROM sys.procedures'
SELECT
*
FROM #ListOfSPs