sp_add_schedule(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed Instance

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

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 기본값 1 (사용)을 사용하여 tinyint입니다. 이 경우 0일정을 사용할 수 없습니다. 일정을 사용하도록 설정하지 않으면 이 일정에 따라 작업이 실행되지 않습니다.

[ @freq_type = ] freq_type

작업이 실행될 시기를 나타내는 값입니다. @freq_type 기본값0인 int이며 이러한 값 중 하나일 수 있습니다.

설명
1 한 번
4 매일
8 매주
16 매월
32 월별, @freq_interval 기준
64 SQL Server 에이전트 서비스가 시작될 때 실행
128 컴퓨터가 유휴 상태일 때 실행(Azure SQL Managed Instance에서 지원되지 않음)

[ @freq_interval = ] @freq_interval

작업이 실행되는 날짜입니다. @freq_interval 기본값1인 int이며 @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 기본값0인 int이며 이러한 값 중 하나일 수 있습니다.

설명(단위)
0x1 지정된 시간에
0x2
0x4
0x8 시간

[ @freq_subday_interval = ] freq_subday_interval

작업의 각 실행 사이에 발생할 @freq_subday_type 기간의 수입니다. @freq_subday_interval 기본값0인 int입니다. 간격은 10초 이상이어야 합니다. @freq_subday_type 같은 1경우 @freq_subday_interval 무시됩니다.

[ @freq_relative_interval = ] freq_relative_interval

@freq_interval 32(월별 상대)인 경우 매월 작업의 @freq_interval 발생 합니다. @freq_relative_interval 기본값0인 int이며 이러한 값 중 하나일 수 있습니다. @freq_type 32와 같지 않은 경우 @freq_relative_interval 무시됩니다.

설명(단위)
1 첫 번째
2 두 번째
4 세 번째
8 네 번째
16 마지막

[ @freq_recurrence_factor = ] freq_recurrence_factor

예약된 작업 실행 사이의 주 또는 월 수입니다. @freq_recurrence_factor @freq_type 32816또는 . @freq_recurrence_factor int이며 기본값은 .입니다0.

[ @active_start_date = ] active_start_date

작업 실행을 시작할 수 있는 날짜입니다. @active_start_date int이며, 기본값NULL은 오늘 날짜를 나타냅니다. 날짜의 형식은 다음과 같습니다 yyyyMMdd. @active_start_date NULL이 아니면 날짜가 19900101 보다 크거나 같아야 합니다.

일정을 만든 후 시작 날짜를 검토하고 올바른 날짜인지 확인합니다. 자세한 내용은 작업 일정 만들기 및 연결의 "시작 날짜 예약" 섹션을 참조하세요.

매주 또는 매월 일정의 경우 에이전트는 @active_start_date 과거인지를 무시하고 대신 현재 날짜를 사용합니다. SQL Server 에이전트 일정을 만들 sp_add_schedule 때 작업 실행이 시작되는 날짜인 매개 변수 @active_start_date 지정하는 옵션이 있습니다. 일정 유형이 매주 또는 매월이고 @active_start_date 매개 변수가 과거의 날짜로 설정된 경우 @active_start_date 매개 변수는 무시되고 현재 날짜는 @active_start_date 사용됩니다.

[ @active_end_date = ] active_end_date

작업 실행을 중지할 수 있는 날짜입니다. @active_end_date 9999년 12월 31일을 나타내는 기본값99991231인 int입니다. 로 형식이 지정 yyyyMMdd됩니다.

[ @active_start_time = ] active_start_time

작업 실행을 시작할 @active_start_date @active_end_date 사이의 모든 날짜 시간입니다. @active_start_time int이며 기본값00000024시간 시계에서 오전 12:00:00을 나타내며 양식을 HHmmss사용하여 입력해야 합니다.

[ @active_end_time = ] active_end_time

작업의 실행을 종료할 @active_start_date @active_end_date 사이의 날짜에 대한 시간입니다. @active_end_time 24시간 시계에서 오후 11시 59분 59분이라는 기본값235959을 사용하여 int이며 양식을 HHmmss사용하여 입력해야 합니다.

[ @owner_login_name = ] 'owner_login_name'

일정을 소유하는 서버 보안 주체의 이름입니다. @owner_login_name 기본값NULL인 sysname이며, 이는 일정이 작성자가 소유하고 있음을 나타냅니다.

[ @schedule_uid = ] schedule_uid OUTPUT

일정의 고유 식별자입니다. @schedule_uid uniqueidentifier 형식의 변수입니다.

[ @schedule_id = ] schedule_id OUTPUT

일정에 대한 식별자입니다. @schedule_id int 형식의 변수입니다.

[ @originating_server = ] server_name

정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.

반환 코드 값

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

결과 집합

없음.

설명

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

사용 권한

이 저장 프로시저는 db_owner 역할이 소유합니다. 모든 사용자에 대한 사용 권한을 부여 EXECUTE 할 수 있지만 SQL Server 업그레이드 중에 이러한 권한이 재정의될 수 있습니다.

다른 사용자에게는 데이터베이스에서 다음 SQL Server 에이전트 고정 데이터베이스 역할 msdb 중 하나가 부여되어야 합니다.

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

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

예제

A. 일정 만들기

다음 예제에서는 이름이 지정된 RunOnce일정을 만듭니다. 일정은 일정이 만들어진 날에 한 번 23:30 실행됩니다.

USE msdb;
GO

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

B. 일정을 만들고 일정을 여러 작업에 연결

다음 예제에서는 이름이 지정된 NightlyJobs일정을 만듭니다. 이 일정을 사용하는 작업은 서버 01:00의 시간이 될 때 매일 실행됩니다. 이 예제에서는 작업 및 작업에 BackupDatabaseRunReports일정을 연결합니다.

참고 항목

이 예제에서는 작업과 작업이 BackupDatabaseRunReports 이미 있다고 가정합니다.

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