Monday, July 31, 2017

▷ Mssql backup (MSSQL DB 백업 프로시저 예제)

[ Mssql backup ]


/*
-- 복원 작업
-- 1. USE Master
-- 2. 최근의 전체 백업 복원
-- - RESTORE DATABASE DB명 FROM DISK = '전체백업파일 풀패스' WITH NORECOVERY
-- (다음 로그 백업이 남아 있으면 NORECOVERY를 사용)
-- 3. 전체백업이후 로그백업부터 최근 전의 로그백업 복원
-- - RESTORE LOG DB명 FROM DISK = '로그백업파일 풀패스' WITH NORECOVERY
-- (다음 로그 백업이 남아 있으면 NORECOVERY를 사용)
-- 4. 최근의 로그백업 복원
-- - RESTORE LOG DB명 FROM DISK = '로그백업파일 풀패스' WITH RECOVERY
-- (다음 로그 백업이 남아 있지 않으면 RECOVERY를 사용)
-- 5. 복원 확인

>>> 로그 삭제 <<<
-- 로그최소로 축소
backup log mdb with truncate_only
-- 2M로 초기화
dbcc shrinkfile(mdb_log,2)

-- 복구할 DB명으로 DB가 생성되어 있지 않아야 함.
-- DB복구 전 이름 확인
restore filelistonly from disk='C:\Temp\mdb_081229'
-- DB복구 (WITH MOVE 옵션)
restore database mdb_1229 from disk='C:\Temp\mdb_081229' with move 'mdb' to 'c:\temp\mdb_1229.mdf' , move 'mdb_log' to 'c:\temp\mdb_log_1229.ldf'
*/

SET ANSI_NULLS ON
GO

CREATE PROC DB_BACKUP
AS
BEGIN

-- (1개 행 적용됨) 와 같은 메세지를 보이지 않게 하기 위함
set nocount on

-- 백업디렉토리선언 (@fBackDir : 전체백업디렉토리, @lBackDir : 로그백업디렉토리)
declare @fBackDir varchar(512)
declare @lBackDir varchar(512)
set @fBackDir='d:\NM\Work\Backup\dB_Backup\fBackup\'
set @lBackDir='d:\NM\Work\Backup\dB_Backup\lBackup\'

-- 백업파일선언 (@fBackup : 전체백업, @lBackup : 로그백업)
declare @fBackup varchar(512)
declare @lBackup varchar(512)

-- 백업할DB선언
declare @dbName1 varchar(512)
declare @dbName2 varchar(512)
set @dbName1='bs_mdb'
set @dbName2='mdb'

-- 요일선언 (일요일:1, 토요일:7)
declare @dw int
set @dw=datepart(dw,getdate()-1)

-- <전체백업 : 일요일>
if @dw=1
begin
-- @dbName1 백업
set @fBackup=@fBackDir+@dbName1+'_'+convert(char(8),getdate(),112)+'.dat'
backup database @dbName1 to disk=@fBackup with format, init waitfor delay '00:00:10';
-- @dbName2 백업
set @fBackup=@fBackDir+@dbName2+'_'+convert(char(8),getdate(),112)+'.dat'
backup database @dbName2 to disk=@fBackup with format, init waitfor delay '00:00:10';
end
-- <로그백업 : 월요일 ~ 토요일>
if @dw<>1
begin
-- @dbName1 백업
set @lBackup=@lBackDir+@dbName1+'_log_'+convert(char(8),getdate(),112)+'.log'
backup log @dbName1 to disk=@lBackup with init
-- @dbName2 백업
set @lBackup=@lBackDir+@dbName2+'_log_'+convert(char(8),getdate(),112)+'.log'
backup log @dbName2 to disk=@lBackup with init
end

SET NOCOUNT OFF

END;

SET ANSI_NULLS ON
GO

No comments:

Post a Comment

◈ Recent Post

▷ UITest demo with TestOne (Mobile, Keypad and Drag until found tip)

[ UITest Demo Environment ] 1. UITest Solution: TestOne 2. Description 데모 설명    How to use keypad, and to drag until found.     키패드를...

◈ Popular Posts