2016-08-31 4 views
0

총 테이블 수, 총 행 수, DB가 마지막으로 업데이트 된 시간 및 저장된 proc이 마지막으로 실행 된 시간을 계산하려고합니다. 수동으로 계산 한 후 총 4 개의 표와 153 개의 행이 있습니다. 내 SELECT 끝에 sEPS.last_execution_time을 추가하면 숫자가 삭제됩니다. 성공적으로 모든 것을 AGGR 할 수있는 방법이 있습니까? 그렇다면 마지막 실행 날짜를 취소하십시오.집계 함수 그룹 By

SELECT 
    COUNT(SCHEMA_NAME(sO.schema_id)) AS TableCount, 
    SUM(sPTN.Rows) AS [RowCount], 
    MAX(sO.modify_date) AS LastUpdated, 
    (sEPS.last_execution_time) AS 'LastExecuted' 
FROM sys.objects AS sO 
INNER JOIN sys.partitions AS sPTN ON sO.object_id = sPTN.object_id 
INNER JOIN sys.dm_exec_procedure_stats AS sEPS ON sO.object_id = sEPS.object_id 
WHERE sO.type = 'U' 
GROUP BY sEPS.last_execution_time 

위의 코드를 실행하면 5 개의 행이 다시 생성되고 (하나만 있어야 함) 하나의 테이블을 3 번 얻게됩니다. 어떤 도움을 주셔서 감사합니다. 감사 메시지

답변

1

sp가 마지막으로 실행 된 시간은 나머지 테이블과 조인 할 수 없습니다. 다른 하나는 테이블의 object_id로 결합되기 때문에 마지막으로 조인 할 수 없습니다. 다음과 같이 할 수 있습니다.

SELECT COUNT(DISTINCT SO.object_id) AS TableCount, 
     SUM(sPTN.Rows) AS [RowCount], 
     MAX(sO.modify_date) AS LastUpdated, 
     MAX(LastExecuted) LastExecuted 
FROM sys.objects AS sO 
INNER JOIN sys.partitions AS sPTN 
    ON sO.object_id = sPTN.object_id 
CROSS JOIN (SELECT MAX(last_execution_time) LastExecuted 
      FROM sys.dm_exec_procedure_stats) AS sEPS 
WHERE sO.type = 'U'; 
+0

높음 10 개! 라마크 감사합니다. – Clint