다음을 통해 공유


sp_add_schedule(Transact-SQL)

여러 작업에서 사용할 수 있는 일정을 만듭니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

        sp_add_schedule [ @schedule_name = ] 'schedule_name' 
    [ , [ @enabled = ] enabled ]
    [ , [ @freq_type = ] freq_type ]
    [ , [ @freq_interval = ] freq_interval ] 
    [ , [ @freq_subday_type = ] freq_subday_type ] 
    [ , [ @freq_subday_interval = ] freq_subday_interval ] 
    [ , [ @freq_relative_interval = ] freq_relative_interval ] 
    [ , [ @freq_recurrence_factor = ] freq_recurrence_factor ] 
    [ , [ @active_start_date = ] active_start_date ] 
    [ , [ @active_end_date = ] active_end_date ] 
    [ , [ @active_start_time = ] active_start_time ] 
    [ , [ @active_end_time = ] active_end_time ] 
    [ , [ @owner_login_name = ] 'owner_login_name' ]
    [ , [ @schedule_uid = ] schedule_uid OUTPUT ]
    [ , [ @schedule_id = ] schedule_id OUTPUT ]
    [ , [ @originating_server = ] server_name ] /* internal */

인수

  • [ @schedule_name = ] 'schedule_name'
    일정의 이름입니다. schedule_name은 sysname이며 기본값은 없습니다.

  • [ @enabled = ] enabled
    일정의 현재 상태를 나타냅니다. enabled는 tinyint이며 기본값은 1(사용)입니다. 0이 지정되어 있는 경우에는 일정을 사용할 수 없습니다. 일정을 사용할 수 없는 경우 이 일정에 따라 어떠한 작업도 실행되지 않습니다.

  • [ @freq_type = ] freq_type
    작업이 실행될 시기를 나타내는 값입니다. freq_type은 int이고 기본값은 0이며 다음 값 중 하나를 사용할 수 있습니다.

    설명

    1

    한 번

    4

    매일

    8

    매주

    16

    매월

    32

    매월(freq_interval에 상대적임)

    64

    SQLServerAgent 서비스를 시작할 때 실행

    128

    컴퓨터가 유휴 상태일 때 실행

  • [ @freq_interval = ] freq_interval
    작업이 실행되는 날짜입니다. freq_interval은 int이고 기본값은 1이며 freq_type의 값에 따라 달라집니다.

    freq_type의 값

    freq_interval에 미치는 영향

    1(한 번)

    freq_interval이 사용되지 않습니다.

    4(매일)

    매 freq_interval일

    8(매주)

    freq_interval은 다음 중 하나 이상이 될 수 있습니다. 이 경우 OR 논리 연산자와 함께 사용할 수 있습니다.

    1 = 일요일

    2 = 월요일

    4 = 화요일

    8 = 수요일

    16 = 목요일

    32 = 금요일

    64 = 토요일

    16(매월)

    월 중 freq_interval일

    32(매월 상대적)

    freq_interval은 다음 중 하나일 수 있습니다.

    1 = 일요일

    2 = 월요일

    3 = 화요일

    4 = 수요일

    5 = 목요일

    6 = 금요일

    7 = 토요일

    8 = 일

    9 = 평일

    10 = 주말

    64(SQLServerAgent 서비스를 시작할 때)

    freq_interval이 사용되지 않습니다.

    128

    freq_interval이 사용되지 않습니다.

  • [ @freq_subday_type = ] freq_subday_type
    freq_subday_interval에 대한 단위를 지정합니다. freq_subday_type은 int이며 기본값은 0이지만 다음 값 중 하나일 수 있습니다.

    설명(단위)

    0x1

    지정된 시간

    0x2

    0x4

    0x8

  • [ @freq_subday_interval = ] freq_subday_interval
    각 작업 실행 간에 발생할 freq_subday_type 기간의 일 수입니다. freq_subday_interval은 int이며 기본값은 0입니다. freq_subday_type이 1인 경우 freq_subday_interval은 무시됩니다. 참고: 간격은 10초보다 길어야 합니다.

  • [ @freq_relative_interval = ] freq_relative_interval
    freq_interval이 32(매월 상대적)인 경우 매월 freq_interval 기간의 작업 발생 횟수입니다. freq_relative_interval은 int이고 기본값은 0이며 다음 값 중 하나를 사용할 수 있습니다. freq_type이 32가 아닌 경우 freq_relative_interval은 무시됩니다.

    설명(단위)

    1

    첫째

    2

    둘째

    4

    셋째

    8

    넷째

    16

    마지막

  • [ @freq_recurrence_factor = ] freq_recurrence_factor
    예약된 작업 실행 간에 발생하는 주 또는 월의 수입니다. freq_recurrence_factor는 freq_type이 8, 16 또는 32인 경우에만 사용됩니다. freq_recurrence_factor는 int이며 기본값은 0입니다.

  • [ @active_start_date = ] active_start_date
    작업 실행을 시작할 수 있는 날짜입니다. active_start_date는 int이며 기본값은 오늘 날짜를 나타내는 NULL입니다. 날짜 형식은 YYYYMMDD입니다. active_start_date가 NULL이 아닌 경우에는 반드시 날짜가 19900101 이후여야 합니다.

    일정을 만든 다음 시작 날짜를 검토하여 날짜가 제대로 되어 있는지 확인하십시오. 자세한 내용은 일정을 만들고 작업에 연결의 "시작 날짜 예약" 섹션을 참조하십시오.

  • [ @active_end_date = ] active_end_date
    작업 실행을 중지할 수 있는 날짜입니다. active_end_date는 int이며 기본값은 9999년 12월 31일을 나타내는 99991231입니다. 날짜 형식은 YYYYMMDD입니다.

  • [ @active_start_time = ] active_start_time
    active_start_date와 active_end_date 사이에서 작업 실행을 시작할 시간입니다. active_start_time은 int이며 기본값은 24시간 기준으로 오전 12시를 가리키는 000000입니다. 시간은 HHMMSS 형식으로 입력해야 합니다.

  • [ @active_end_time = ] active_end_time
    active_start_date와 active_end_date 사이에서 작업 실행을 종료할 시간입니다. active_end_time은 int이며 기본값은 24시간 기준으로 오후 11:59:59를 가리키는 235959입니다. 시간은 HHMMSS 형식으로 입력해야 합니다.

  • [ @owner_login_name= ] 'owner_login_name'
    일정을 소유하는 서버 보안 주체의 이름입니다. owner_login_name은 sysname이며 기본값은 작성자가 일정을 소유하고 있음을 나타내는 NULL입니다.

  • [ @schedule_uid= ] schedule_uidOUTPUT
    일정의 고유 식별자입니다. schedule_uid는 uniqueidentifier 형식의 변수입니다.

  • [ @schedule_id= ] schedule_idOUTPUT
    일정 식별자입니다. schedule_id는 int 형식의 변수입니다.

  • [ @originating_server= ] server_name
    정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다.

반환 코드 값

0(성공) 또는 1(실패)

결과 집합

없음

주의

SQL Server Management Studio는 작업 구조를 만들고 관리할 수 있는 바람직한 방법을 제공하는데 이는 그래픽을 사용하여 쉽게 작업을 관리할 수 있는 방법입니다.

사용 권한

기본적으로 sysadmin 고정 서버 역할의 멤버는 이 저장 프로시저를 실행할 수 있습니다. 다른 사용자는 msdb 데이터베이스의 다음 SQL Server 에이전트 고정 데이터베이스 역할 중 하나를 부여 받아야 합니다.

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

이러한 역할의 사용 권한에 대한 자세한 내용은 SQL Server 에이전트 고정 데이터베이스 역할을 참조하십시오.

1. 일정 만들기

다음 예에서는 RunOnce라는 일정을 만듭니다. 일정은 일정이 생성된 날짜의 23:30에 한 번 실행됩니다.

USE msdb ;
GO

EXEC dbo.sp_add_schedule
    @schedule_name = N'RunOnce',
    @freq_type = 1,
    @active_start_time = 233000 ;

GO

2. 일정 만들기, 여러 작업에 일정 연결

다음 예에서는 NightlyJobs라는 일정을 만듭니다. 서버 시간이 01:00일 때 이 일정을 사용하는 작업이 매일 실행됩니다. 이 예에서는 BackupDatabase 작업과 RunReports 작업에 일정을 연결합니다.

[!참고]

이 예에서는 BackupDatabase 작업 및 RunReports 작업이 이미 있다고 가정합니다.

USE msdb ;
GO

EXEC sp_add_schedule
    @schedule_name = N'NightlyJobs' ,
    @freq_type = 4,
    @freq_interval = 1,
    @active_start_time = 010000 ;
GO


EXEC sp_attach_schedule
   @job_name = N'BackupDatabase',
   @schedule_name = N'NightlyJobs' ;
GO

EXEC sp_attach_schedule
   @job_name = N'RunReports',
   @schedule_name = N'NightlyJobs' ;
GO