Standard, Enterprise, Express 인데, 이 중 Express 는 무료버전이며, 공짜여서 그런지(?) SSMS(SQL Server Management Studio)의 [Maintenance Plans] (유지 관리 계획) 을 활용하여 자동으로 백업 스케줄링 하는 기능을 사용할 수 없다.
그래서 이번 포스팅에서는 Express 에디션으로도 자동 백업 스케줄링을 할 수 있는 방법에 대해 알아보려고 한다!
SQL Server Express 에디션에서 자동 백업 스케줄링 하는 방법은 크게
[SQL 쿼리 파일 생성] -> [sqlcmd로 해당 쿼리 파일 정상 작동 확인] -> [윈도우의 Task Scheduler 설정] 의 과정을 거친다. 아래에서 하나하나 살펴보도록 하자!
SQL 쿼리 파일 생성
USE AdventureWorks2019;
DECLARE @DateString VARCHAR(30) -- 'DateString' 이라는 변수 선언
DECLARE @dbName NVARCHAR(30) = N'AdventureWorks2019'
-- NVARCHAR 타입은 VARCHAR 타입과 달리 유니코드를 지원.
-- 'dbName' 변수에 백업시키려는 DB 이름을 넣을 것임.
DECLARE @bakName NVARCHAR(50) = N'\Daily_Full_AdvenTest_'
-- 'bakName' 변수에 백업파일의 이름이 될 문자열을 넣을 것임.
DECLARE @bakDir NVARCHAR(150) = N'C:\SQL_Backup\Manual_BACKUP'
-- 'bakDir' 변수에 백업파일이 생성될 디렉토리를 문자열로 넣을 것임.
SET @DateString = -- 백업파일명 뒤에 MMDDhhmmss 형태로 넣어주기 위한 DateString 설정
(
SELECT FORMAT(DATEPART(mm, GETDATE()), '00')
-- FORMAT(인자, '00') : 인자를 두 자릿수로 만들겠다.
-- DATEPART(mm, GETDATE()) : 현재 날짜에서 '월'만 추출하겠다.
+ FORMAT(DAY(GETDATE()), '00')
-- DAY(GETDATE()) : 현재 날짜에서 '일'만 추출하겠다.
+ REPLACE(CONVERT(VARCHAR(8), GETDATE(), 108), ':', '')
-- REPLACE(인자, '특정문자열1', '특정문자열2') : 인자에서 '특정문자열1'을 '특정문자열2'로 변경하겠다.
-- CONVERT 날짜 형식 함수로, 구글링 참고!!
)
SET @bakName = @bakName + @DateString + '.bak'
SET @bakDir = @bakDir + @bakName;
BACKUP DATABASE @dbName
TO DISK = @bakDir
WITH INIT, STATS=10;
-- TO DISK = '원하는 경로 설정(파일명.bak까지 반드시 들어가야 함)'
-- INIT 옵션 : 백업 작업이 백업 미디어의 기존 백업 세트에 추가되는지 덮어씌우는지 여부를 제어.
-- NOINIT - 기존 백업 세트에 추가 / INIT - 기존 백업 세트에 덮어씌우기.
-- STATS 옵션 : 해당 값의 퍼센티지마다 SSMS 결과 메시지로 출력하겠다.
-- ex) STATS=10 => 백업이 10퍼센트 완료될 때마다 SSMS 결과 메시지로 출력함.
위와 같은 백업 쿼리문을 작성하고 해당 쿼리를 파일로 저장한다. 이때 저장되는 위치를 반드시 기억해야 한다! (쿼리 파일의 확장자명은 .sql이다.)
sqlcmd 로 해당 쿼리 파일 정상 작동 확인 Task Scheduler 에 등록하기 전에, 우선 sqlcmd 로 해당 백업 쿼리 파일이 제대로 실행되는 지를 확인해야 한다. cmd에서 sqlcmd를 테스트 한 화면
cmd (명령 프롬프트 창)을 실행하여 아래 명령어를 입력해준다.
-S : [프로토콜명]:[서버 호스트네임 or IP],[해당 서버 서비스 Port] ex) tcp:127.0.0.1,1433 -E :trusted connection 옵션. -i :inputfile 옵션. 이 옵션 뒤에 [쿼리 파일명.sql]을 입력. ex) C:\~ 경로 : 백업 쿼리 파일이 저장된 디렉토리 입력.
'BACKUP DATABASE successfully' 라는 메시지를 확인했으니, sqlcmd로 해당 쿼리 파일이 정상 작동되었음을 확인할 수 있다!
윈도우의 Task Scheduler (작업 스케줄러) 설정 Task Scheduler (작업 스케줄러) 실행 [Create Task] (작업 만들기) 실행
[General] (일반) 탭 - 내가 알아볼 수 있게끔 작업 이름 입력
[Triggers] (트리거) 탭 - 새로 만들기 - 원하는 옵션 설정
나는 위와 같이 Daily에 1일로 지정하여 매일 일정시간에 백업되도록 설정하였다.
[Actions] (동작) 탭 - 새로 만들기 - [Start a program] 선택 - "sqlcmd ~" 입력 - [백업쿼리 파일 디렉토리] 입력 동작에서는 쉽게 생각해서 2번에서 했던 동작을 등록해주는 과정이라고 보면 된다! [Start a program] 을 선택한 후, Program/script: 란에 sqlcmd -s 127.0.0.1,1433 -E -i 를, arguments 란에 C:\Users\Administrator\Desktop\SQL_Server_Query\풀백업_테스트.sql를 입력해준다.
여기까지 하면 작업 스케줄러 등록까지 완료된다. 작업 스케줄러 등록이 완료 되었다면, 해당 시간에 실제 백업 작업이 잘 진행되었는지, 수정 시간을 통해 반드시 확인해보길 바란다!
최근댓글