본문 바로가기
DATABASE/MsSQL

[MsSQL] 백업 파일 관리 - 최근 전체 백업과 하위 로그 백업 확인하기

by DANEW 2024. 11. 14.

Backup File 조회하기

MsSQL은 전체 복구 모델일 경우 Full Backup 을 받은 후 하위에 Log Backup을 하며 하나의 세트를 만들어간다.

자세한 설명을 아래의 글로 남겨두도록 하겠다.

 

[MsSQL] Database 복구 모델 - Simple, Full (단순 모델, 전체 모델)

[MsSQL] Database Backup이란? - Full / Differential / Log Backup

 

보통 실무에서 예를들자면,

1일 단위로 Full Backup을 받고 4시간 단위 Log Backup을 받는식으로의 백업 정책을 가지고 있는데,

어떠한 Full Backup 파일 하위에 어떤 순서로 어떤 Log Backup 파일을 가지고 있는지 한눈에 알아보는 쿼리를 작성해 보았다.

 

Query

쿼리 자체는 간단하다.

BACKUPSET이라는 성공적으로 완료된 백업에 대한 정보를 포함하는 시스템 테이블을 조회하여 작성하였다.

select a.database_name, 
       a.name, 
	   a.first_lsn, 
	   a.last_lsn, 
	   a.checkpoint_lsn, 
	   a.database_backup_lsn, 
	   a.backup_start_date, 
	   a.backup_finish_date, 
	   a.type
  from BACKUPSET a with(nolock) 
 inner join (select database_name,
	                max(backup_finish_date) as last_backup_finish_date
               from BACKUPSET with(nolock)
              where type = 'D'
              group by database_name) b
    on a.database_name = b.database_name
   and a.backup_finish_date = b.last_backup_finish_date
 where a.type = 'D'
 union all 
select aa.database_name, 
       aa.name, 
       aa.first_lsn, 
       aa.last_lsn, 
       aa.checkpoint_lsn, 
       aa.database_backup_lsn, 
       aa.backup_start_date, 
       aa.backup_finish_date, 
       aa.type
  from BACKUPSET aa with(nolock)
 inner join (select a.database_name, 
	                a.checkpoint_lsn 
               from BACKUPSET a with(nolock) 
              inner join (select database_name,
	                             max(backup_finish_date) as last_backup_finish_date
                            from BACKUPSET with(nolock)
                           where type = 'D'
                           group by database_name) b
                 on a.database_name = b.database_name
                and a.backup_finish_date = b.last_backup_finish_date
              where a.type = 'D') bb
    on aa.database_backup_lsn = bb.checkpoint_lsn
 where type = 'L'
 order by database_name, 
          last_lsn

 

데이터베이스 별 Full Backup 파일 중 제일 마지막 Full Backup 파일과 해당 백업파일의 checkpoint_lsn을 가져와 Log Backup 파일의 database_backup_lsn과 같은 파일을 찾는 로직이다.

 

 

Related Posts

 

backupset(Transact-SQL) - SQL Server

각 백업 집합에 대한 행을 포함합니다. 백업 세트에는 하나의 성공한 백업 작업의 백업이 포함됩니다.

learn.microsoft.com

반응형