예~~전에 30분전 데이터를 가지고 있는 DB를 야매로 만들어 본 적이 있습니다.
근데.. 이거두 하두 예전에 한거라서... 어케 했던건지.. 기억이 잘 나지는 않네요...
이대로 하면 잘 되는지도 모르겠네요 ㅡㅡ;;
아무튼 제 기억으로는...
항상 30분 전의 데이터를 유지하는 DB를 만들었었던거 같습니다. ㅎㅎ
.... 이게 쓸모가 있는지는 모르겠지만... 그냥 이런것두 있구나 라고 생각하세요 ㅎㅎ
-- 날짜 형식 , ex) 200705041041
select convert(CHAR(8),getdate(),112)+replace((substring(convert(CHAR(19),getdate(),120),12,6)),':','')
-- 30분전
select dateadd(mi,-30,getdate())
-- 크로스
select convert(CHAR(8),getdate(),112)
+ replace((substring(convert(CHAR(19),dateadd(mi,-30,getdate()),120),12,6)),':','')
위에꺼는 시스템 날짜를 가져와서 쪼물딱거리기 위한 참고용 쿼리이구여.
요기서 부터가 시작입니다. ^^
-- pubs 풀 백업 1시간 간격
-- pubs 로그 백업 5분 간격
-- 복구용 쓰래기통 디비 맹글기
-- pubs 디비의 30분전 데이터를 가지고 있을 DB
create database trashcan
-- 최초 Setting !
-- pubs 디비를 trashcan 디비로 복구 with replace,norecovery,move
-- 현재 시각의 30분전 백업 파일
-- [현재 시간 10:30]
-- 복구된 데이터 파일 10:00 꺼
restore database trashcan
from disk='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\pubs\pubs_db_200705041000.BAK'
with replace,norecovery,
move 'pubs' to 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\trashcan.mdf',
move 'pubs_log' to 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\trashcan_log.ldf'
-- 30분 시간만 칼 같이 잘 준수 한다면 이 부분은 안 해도 될 듯 하다 -_-a
-- 어차피 30분 전 로그를 norecovery로 복구 하니까.. 하지만 후다닥 작업 실행 해야 된다는거~
-- 로그 파일 복구 with norecovery
-- 현재 시간의 30분전 로그만 복구
-- 이 후는 작업에 걸린 일정대로 자동으로 수행
-- 현재 시간 [10:31]
-- 복구된 로그 파일 10:00 꺼
restore log trashcan
from disk='c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\pubs\pubs_tlog_200705041000.TRN'
with norecovery
-- 새 작업을 생성하고 아래의 스크립트를 삽입해서 5분 간격으로 일정을 걸어 둔다.
-- 30분전 트랜잭션 파일을 열어서 계속 복구를 한다.(원본 DB와 30분 간격 유지)
-- !! 위의 로그 복구를 실행하고 5분이 지나기 전에 작업을 걸어 두어야 LSN 에러가 나지 않는다 !!
-- 현재 시간 [10:32]
-- 10:35분이 되면 작업이 실행 될 것이다.
declare @filename varchar(100)
set @filename = 'c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\pubs\pubs_tlog_'
+ convert(CHAR(8),getdate(),112)
+ replace((substring(convert(CHAR(19),dateadd(mi,-30,getdate()),120),12,6)),':','')
+ '.TRN'
restore log trashcan from disk=@filename
with norecovery
-- 10:35분이 되면 위의 쿼리가 실행이 되고 10:05분에 백업된 로그가 복구가 될 것이다.
-- trashcan 디비는 항상 로드중(회색)으로 표기되어 있다.
댓글