SQL Server는 크게 3가지 에디션으로 나뉜다.
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 -S 127.0.0.1,1433 -E -i C:\Users\Administrator\Desktop\SQL_Server_Query\풀백업_테스트.sql
-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 (작업 스케줄러) 설정
나는 위와 같이 Daily에 1일로 지정하여 매일 일정시간에 백업되도록 설정하였다.
동작에서는 쉽게 생각해서 2번에서 했던 동작을 등록해주는 과정이라고 보면 된다!
[Start a program] 을 선택한 후,
Program/script: 란에 sqlcmd -s 127.0.0.1,1433 -E -i 를,
arguments 란에 C:\Users\Administrator\Desktop\SQL_Server_Query\풀백업_테스트.sql 를 입력해준다.
여기까지 하면 작업 스케줄러 등록까지 완료된다. 작업 스케줄러 등록이 완료 되었다면,
해당 시간에 실제 백업 작업이 잘 진행되었는지, 수정 시간을 통해 반드시 확인해보길 바란다!
참고
https://seodavi.tistory.com/48
'DB > SQL Server (MSSQL)' 카테고리의 다른 글
[MSSQL] SSMS Restore Database(DB 복원) - 옵션 페이지(Restore options / Tail-Log backup / Server connections 등) (0) | 2022.04.18 |
---|---|
[MSSQL] 자동 백업 스케줄러 설정 (2) - SSMS 활용 (0) | 2022.01.26 |
[MSSQL] 인덱스 유지 및 관리, 최적화 (0) | 2021.12.22 |
[MSSQL] 통계(Statistics) (2) - CREATE, UPDATE 시기 및 통계의 효율적 활용 (0) | 2021.12.21 |
[MSSQL] LSN을 활용하여 특정 시점으로 데이터 복원하기 (0) | 2021.12.10 |
최근댓글