MSSQL - 스케줄러 사용법 (스케줄 생성, 작업 일정 설정, 스케줄러 실행)

반응형

개요

주기적으로 혹은 어쩌다가 한번씩 대량의 데이터를 입력하거나 수정해야 할 때가 있다.

하지만 실제로 서비스 중인 데이터베이스 서버에 대량의 값을 넣으려면

다량의 I/O 작업으로 인해 과부하가 발생되어 데이터베이스의 성능이 저하되므로 함부로 작업을 수행하기는 어렵다.

이럴 때, 가능한한 서비스 사용자의 이용이 적은 시간대에 스케줄러를 이용하여

대량의 데이터를 삽입하는 작업을 하면 서비스의 품질 불량을 최소화할 수 있다.

 

오늘은 스케줄러를 이용하여 일정을 정하고,

정해진 일정에 입력된 작업을 데이터베이스에 수행되도록 하는 방법에 대해 알아본다.

 

참고

스케줄러 생성에 관련하여 참고될만한 글 목록이다.

자신의 상황과 같은 현상이 일어난다면 확인해보자.

 

SQL Server Agent 가 없거나 중지 상태 일 경우 해결 방법

SQL Server Agent을 설정하려고 하는데 SQL Server 구성 관리자가 없을 경우 해결 방법

 

스케줄러 생성하기

작업 스케줄러 생성 예시 화면
스케줄러 생성 예시 화면

 

스케줄러 설정하기 - 기본 설정

New Job - General (새 작업 - 일반)

  • Name(이름) : test
  • Category(범주) : 테스트이므로 따로 지정하지 않음

작업 스케줄러 일반 설정 예시 화면
스케줄러 일반 설정 예시 화면

 

스케줄러 설정하기 - 수행할 작업 설정

New Job - Steps (새 작업 - 단계)

  • New(새로 만들기)

작업 스케줄러 단계 설정 예시 화면
스케줄러 단계 설정 예시 화면

 

New Job - Steps - New Job Step (새 작업 - 단계 - 새 작업 단계)

  • Step name(단계 이름) : 사용자가 식별이 가능한 이름 정의
  • Database(데이터베이스) : 사용할 데이터베이스
  • Command(명령) : 데이터베이스 내에서 실행할 쿼리 내용
  • 포스팅에서는 테스트 테이블에 값 하나를 추가하는 내용의 스케줄러를 작성하였음.
-- 예시 작성 쿼리
insert into t1 (col1, col2)
	values (val1, val2)

작업 스케줄러 수행할 작업 정의 예시 화면
스케줄러 수행할 작업 정의 예시 화면

 

스케줄러 설정하기 - 작업을 수행할 시간 및 빈도 설정

New Job - Schedules (새 작업 - 일정)

  • New(새로 만들기)

작업 스케줄러 일정 설정 예시 화면
스케줄러 일정 설정 예시 화면

 

New Job - Schedules - New Job Schedule (새 작업 - 일정 - 새 작업 일정)

  • Name(이름) : 사용자가 식별 가능한 작업 일정 이름 정의
  • Schedule type(일정 유형)
    • Start automatically when SQL Server Agent starts (SQL Server 에이전트가 시작될 때 자동으로 시작)
      • 서버 재부팅 후 초기화 작업을 수행할 때 사용 (예: 로그 파일 초기화)
      • 서버 중단 및 재개를 할 때 필요한 작업을 자동으로 실행하도록 할 때 사용 (예: 시스템 상태 점검)
    • Start whenever the CPUs become idle (CPU가 유휴 상태로 될 때마다 시작)
      • 서버의 CPU 사용률이 낮아져 유휴 상태가 될 때 작업 실행
      • 유휴 상태를 감지하여 시스템 성능에 미치는 영향을 최소화하기 위해 리소스 집약적인 작업을 수행할 때 사용 (예: 인덱스 재구성)
      • 정기적인 유지보수 작업이나 백업 작업을 CPU가 유휴 상태일 때 실행하여 사용자가 활동 중인 시간대에도 영향을 주지 않도록 하기 위해 사용 (예: 데이터 백업)
    • Recuring (되풀이)
      • 해당 옵션 선택 시 Frequency(빈도)에서 일정을 시작할 날짜를 지정해야 함
    • One time(한 번)
      • 해당 옵션 선택 시 One-time occurrence(한 번 발생)에서 일정을 시작할 날짜를 지정해야 함
    • 포스팅에서는 한 번 실행으로 설정하고, 1분 뒤에 값이 추가되도록 설정하였음.

작업 스케줄러 일정 세부 설정 예시 화면
스케줄러 일정 세부 설정 예시 화면

 

OK 버튼을 눌러 스케줄러를 생성해 보자.

 

스케줄러 확인하기

아래의 경로에서 생성한 스케줄러를 확인해 볼 수 있다.

  • Object Exploer (개체 탐색기)
    • SQL Server Agent (SQL Server 에이전트)
      • Jobs (일정)
        • 생성한 스케줄러 확인

개체 탐색기에서 생성한 스케줄러 확인 예시 화면
개체 탐색기에서 생성한 스케줄러 확인 예시 화면

 

스케줄러 일정 작동 확인 테스트

테스트용 테이블에 '고은별', '인천'이라는 값을 추가되었는지 확인해 보자.

스케줄러 설정 시 일정에서 1분 뒤에 추가되도록 하였으니,

1분 뒤에는 값이 추가되어야 한다.

  • 초기 테스트 테이블의 값

테스트 테이블의 초기 값
테스트 테이블의 초기 값

 

  • 1분 뒤 스케줄러가 실행되어 작업을 수행한 테스트 테이블의 값
    • 스케줄러의 일정에 맞게 설정한 작업이 정상적으로 실행되어 값이 추가됨을 확인할 수 있다.

스케줄러가 작업을 수행하여 값이 추가된 테이블 조회 화면
스케줄러가 작업을 수행하여 값이 추가된 테이블 조회 화면

반응형