2014-03-04 6 views
0

SQL Server의 최신 백업에 대한 자세한 보고서를 만들려고합니다.SQL Server 백업 보고서

select 
    [Server_Name] = a.server_name, 
    [Database_Name] = a.database_name, 
    [Last_Backup] = max(a.backup_finish_date), 
    [Backup_Type] = CASE A.type 
           WHEN 'D' THEN 'FULL' 
           WHEN 'I' THEN 'Differential' 
           WHEN 'L' THEN 'Log' 
           WHEN 'F' THEN 'FileGroup' 
           WHEN 'G' THEN 'FileGroup Differential' 
           WHEN 'P' THEN 'Partial' 
           WHEN 'Q' THEN 'Partial Differential' 
        END, 
    [Backup_Set] = b.name, 
    [Days_Since_Last_Backup] = DATEDIFF(d,(max(a.backup_finish_Date)),GETDATE()) 
from msdb.dbo.backupset AS a 
INNER JOIN msdb.dbo.backupset as b ON a.backup_set_id = b.backup_set_id 
GROUP BY a.database_name, a.server_name, b.name, a.type 
ORDER BY database_name 

내가 열이 다음 표시 할 수 있도록 변경하려면 : 지금 현재 나는이 쓰여있다 Last_Full_Backup, Last_Diff_Backup에 대한 날짜를 표시하기 위해

Server_Name, Database_Name, Last_Full_Backup, Last_Diff_Backup, Last_Log_Backup, 
Backup_Set, Days_Since_Last_Full 

하고, Last_Log_Backup 필자는 피봇 팅 (pivoting)을해야하지만 필자는 어떻게 (피봇 팅에 익숙하지 않은지) 잘 모르겠습니다.

도움을 주시면 감사하겠습니다. 모두에게 미리 감사드립니다.

답변

0

다음과 같이 "수동 피벗"을 사용할 수 있습니다.

SELECT 
    [Server_Name] = a.server_name, 
    [Database_Name] = a.database_name, 
    [Last_Backup]  = MAX(a.backup_finish_date), 
    [Last_Full_Backup] = MAX(CASE WHEN A.type='D' 
            THEN a.backup_finish_date ELSE NULL END), 
    [Last_Diff_Backup] = MAX(CASE WHEN A.type='I' 
            THEN a.backup_finish_date ELSE NULL END), 
    [Last_Log_Backup] = MAX(CASE WHEN A.type='L' 
            THEN a.backup_finish_date ELSE NULL END), 
    [Backup_Set] = b.name, 
    [Days_Since_Last_Backup] = DATEDIFF(d,(max(a.backup_finish_Date)),GETDATE()) 
FROM msdb.dbo.backupset AS a 
INNER JOIN msdb.dbo.backupset as b ON a.backup_set_id = b.backup_set_id 
GROUP BY a.database_name, a.server_name 
ORDER BY database_name 
+0

지금까지 멋졌습니다. NULL을 처리하기 위해 "CASE"문을 추가 할 수 있습니다. 내가 [Days_Since_Last_Backup]을 마지막 FULL 이후로만 표시하도록 어떻게 제안 하시겠습니까? [Days_Since_Last_Full]을 읽도록 열을 변경하려고합니다 ... – homerj742

+0

또한 한 줄에 하나의 데이터베이스를 유지하려고합니다. 이 쿼리는 한 줄에 2 개의 DB를 반환합니다. – homerj742

+0

@ user3380003'GROUP BY'는 타입이 포함되어 있지 않아야합니다. 백업 세트 이름을 사용해야하는지 잘 모르므로 백업 세트 이름을 포함할지 여부를 잘 모릅니다. –