매일 매일 차주언 과장님의 피와 땀이 되는 스크립트 공유해 드립니다^^
부족한 부분 말씀해 주시와요^^
목적 : 트랜잭션 백업
내용 : 시간단위 트랜잭션 백업시 이용한다.
Script
USE master
GO
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ap_TranLogBackup')
BEGIN
DROP PROCEDURE ap_TranLogBackup
END
GO
CREATE PROCEDURE dbo.ap_TranLogBackup
@DBNAME varchar(20),
@physical_path varchar(100) = 'd:\MSSQL\Backup\FBackup\',
@FullBackupTm TINYINT = 6 -- full backup hour
AS
SET NOCOUNT ONDECLARE @query varchar(1000),
@cur_hour tinyint,
@del_hour tinyint,
@cur_device varchar(50),
@del_device varchar(50),
@description varchar(48),
@physical_name varchar(64)
SET @cur_hour = datepart(hour,getdate())
SET @del_hour = datepart(hour,getdate())
--Full Backup 시간은 제외함.
IF @cur_hour = @FullBackupTm
ReturnSET @cur_device = @DBNAME + '_tlog_' + CONVERT(char(8),getdate(),112) + '_'
--48 시간 이전의 device를 삭제한다.
SET @del_device = @DBNAME + '_tlog_' + CONVERT(char(8),dateadd(hour,-48,getdate()),112) + '_'
SET @description = 'Log Hourly Backup , ' + @DBNAME + ' ' + CONVERT(CHAR(16),GETDATE(),20)
IF @cur_hour < 10
SET @cur_device = @cur_device + '0' + convert(char(1),@cur_hour)
ELSE
SET @cur_device = @cur_device + convert(char(2),@cur_hour)
IF @del_hour < 10
SET @del_device = @del_device + '0' + convert(char(1),@del_hour)
ELSE
SET @del_device = @del_device + convert(char(2),@del_hour)SET @physical_name = @physical_path + @cur_device + '.tbak'
PRINT 'cur_device : ' + @cur_device
PRINT 'del_device : ' + @del_device
PRINT 'physical_name : ' + @physical_name
IF ( select count(*) from master.dbo.sysdevices where name = rtrim(@del_device) ) = 1
EXEC sp_dropdevice @del_device,'delfile'IF ( select count(*) from master.dbo.sysdevices where name = rtrim(@cur_device) ) = 0
EXEC sp_addumpdevice 'disk' , @cur_device , @physical_name
SET @query = 'BACKUP LOG ' + @DBNAME + ' TO ' + @cur_device
PRINT @query
EXECUTE(@query)GO
예제
EXEC DBO.ap_TranLogBackup 'AdventureWorks', 'E:\DB_TEST\Backup\FBackup\'
결과
AdventureWorks_tlog_20081007_22.tbak <-- 요렇게 파일이 생겼군요^^
현재 백업된 정보 보기
select * from master.dbo.sysdevices
'SQL Server 2005' 카테고리의 다른 글
admin.sp_checkDBsize DB SIZE check (0) | 2008.10.13 |
---|---|
admin.003.ap_TranMiLogBackup 분단위 트랜잭션 백업 (0) | 2008.10.13 |
백업 (0) | 2008.10.06 |
SQL Sample Database 등록하기 (0) | 2008.10.01 |
Data 저장과 관련된 3가지 Process (0) | 2008.09.29 |