SQL Server에서 저장 프로 시저 또는 함수의 마지막 변경 날짜를 확인하는 방법


182

마지막으로 기능이 변경된시기를 확인해야합니다. 작성 날짜를 확인하는 방법을 알고 있습니다 (SQL Server Management Studio의 함수 속성 창에 있음).
SQL Server 2000에서는 수정 날짜를 확인할 수 없다는 것을 알았습니다 (이 게시물 참조 : SQL Server 2000에서 저장 프로 시저가 마지막으로 수정 된 시점을 결정할 수 있습니까? )

SQL Server 2008에서 확인할 수 있습니까? MS는이를 확인할 수있는 새로운 기능을 시스템 테이블에 추가합니까?

답변:


385
SELECT name, create_date, modify_date 
FROM sys.objects
WHERE type = 'P'
ORDER BY modify_date DESC

type기능에 대한이다 FN보다는 P절차. 또는 이름 열을 필터링 할 수 있습니다.


5
반환되는 일부 결과가 있어도 특정 권한으로 인해이 쿼리에서 결과가 생략 될 수 있습니다. 우리는 사용자 권한에 따라 다른 결과를 관찰했지만 권한과 관련된 범위를 좁히지 않았습니다. 간단히 말해 : 모든 것을 볼 수 있는지 확인하려면이 쿼리를 SA로 실행하십시오.
Ryan Guill

1
당신은 실제로 맞습니다. msdn.microsoft.com/ko-kr/library/ms190324%28v=sql.105%29.aspx "SQL Server 2005 이상 버전에서 카탈로그 뷰의 메타 데이터 표시는 사용자가 소유 한 보안 개체로 제한됩니다. 사용자에게 일부 권한이 부여되었습니다. 자세한 내용은 메타 데이터 가시성 구성을 참조하십시오. "
크리스 다이버

2
경고의 말. OP가 ALTER DDL 문을 통해 작성된 모듈의 변경을 독점적으로 참조하는 modify_date경우 오해의 소지가 있습니다. 예를 들어, sys.sp_refreshsqlmodule모듈에서를 실행 하면 modify_date기술적으로 모듈의 코드가 변경되지 않은 경우에도 변경됩니다.
gravidThoughts

지정된 데이터베이스 저장 프로 시저 만 얻는 방법은 무엇입니까?!
Irfan

2
@im_one WHERE 행 다음에 찾으려는 저장 프로 시저의 이름을 AND name = 'specified procedure'where 에 추가하십시오 specified procedure.
TylerH

41

저장 프로 시저에 대해 이것을 시도하십시오.

SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'P'
AND name = 'myProc'

1
이것은 간단하고 간단하기 때문에 허용되는 답변이어야합니다.
user3454439

13

이것은 함수를 찾는 올바른 해결책입니다.

SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'fn'
AND name = 'fn_NAME'

7

나는 이것을 새로운 기술로 열거했다.

이것은 매우 상세하다

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo' 
order by  LAST_ALTERED desc

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo' 
order by  CREATED desc 


SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'FUNCTION' and ROUTINE_SCHEMA = N'dbo' 
order by  LAST_ALTERED desc

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'FUNCTION' and ROUTINE_SCHEMA = N'dbo' 
order by  CREATED desc 

4

SQL 2000의 경우 다음을 사용합니다.

SELECT name, crdate, refdate 
FROM sysobjects
WHERE type = 'P' 
ORDER BY refdate desc

2008 .. 어때요? 그 질문 아닌가요?
NREZ

sysobjects의 @NREZ 쿼리는 2008 년에 지원되므로 작동합니다
Paul

refdate는 마지막 수정 날짜가 아닙니다. sys.object와 sysobjects의 날짜 차이를 확인하십시오.
access_granted

2

최신 버전 (2012 이상)에서는이 쿼리를 사용하여 수정 된 저장 프로 시저 세부 사항을 얻을 수 있습니다.

SELECT create_date, modify_date, name FROM sys.procedures 
ORDER BY modify_date DESC

0
SELECT *
FROM sys.objects
WHERE type IN ('FN', 'IF', 'TF') 
AND name = 'dgdsgds'

1
답변에 더 많은 컨텍스트를 추가하도록 요청하십시오. 코드 전용 답변은 이해하기 어렵습니다. 게시물에 더 많은 정보를 추가 할 수 있다면 독자와 미래 독자 모두에게 도움이 될 것입니다.
RBT

0

날짜별로 수정 날짜를 확인 functions하고 stored procedures함께 주문할 때 사용할 수 있습니다 .

SELECT 'Stored procedure' as [Type] ,name, create_date, modify_date 
FROM sys.objects
WHERE type = 'P' 

UNION all

Select 'Function' as [Type],name, create_date, modify_date
FROM sys.objects
WHERE type = 'FN'
ORDER BY modify_date DESC

또는 :

SELECT type ,name, create_date, modify_date 
FROM sys.objects
WHERE type in('P','FN') 
ORDER BY modify_date DESC
-- this one shows type like : FN for function and P for stored procedure

결과는 다음과 같습니다.

Type                 |  name      | create_date              |  modify_date
'Stored procedure'   | 'firstSp'  | 2018-08-04 07:36:40.890  |  2019-09-05 05:18:53.157
'Stored procedure'   | 'secondSp' | 2017-10-15 19:39:27.950  |  2019-09-05 05:15:14.963
'Function'           | 'firstFn'  | 2019-09-05 05:08:53.707  |  2019-09-05 05:08:53.707
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.