Поделиться через


sp_add_schedule (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Создает расписание, которое может использоваться любым количеством заданий.

Соглашения о синтаксисе 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 имеет значение tinyint с значением по умолчанию 1 (включено). Если 0расписание не включено. Если расписание не включено, задания не выполняются в этом расписании.

[ @freq_type = ] freq_type

Значение, указывающее, когда должно выполняться задание. @freq_type имеет значение int, по умолчанию 0и может быть одним из этих значений.

значение Описание
1 Однократно
4 Ежедневно
8 Weekly (Еженедельно);
16 Ежемесячная
32 Ежемесячное значение относительно @freq_interval
64 Запуск при запуске службы агент SQL Server
128 Запуск при простое компьютера (не поддерживается в Управляемый экземпляр SQL Azure)

[ @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. Интервал должен составлять не менее 10 секунд. @freq_subday_interval игнорируется в тех случаях, когда @freq_subday_type равно1.

[ @freq_relative_interval = ] freq_relative_interval

Появление @freq_interval задания в каждом месяце, если @freq_interval составляет 32 (ежемесячный относительный). @freq_relative_interval имеет значение int с значением по умолчанию 0и может быть одним из этих значений. @freq_relative_interval игнорируется в тех случаях, когда @freq_type не равно 32.

Значение Описание (единица измерения)
1 First
2 Second
4 Третья
8 Четвертая
16 Last

[ @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_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 имеет значение int с значением по умолчанию, указывающее 31 декабря 999912319999 года. Форматированный как yyyyMMdd.

[ @active_start_time = ] active_start_time

Время в любой день между @active_start_date и @active_end_date , чтобы начать выполнение задания. @active_start_time имеет значение int, по умолчанию 000000указывающее 12:00:00:00 в 24-часовом часовом режиме и должно быть введено с помощью формыHHmmss.

[ @active_end_time = ] active_end_time

Время в любой день между @active_start_date и @active_end_date завершения выполнения задания. @active_end_time имеет значение int с значением по умолчанию235959, которое указывает 11:59:59 вечера в 24 часах и должно быть введено с помощью формыHHmmss.

[ @owner_login_name = ] 'owner_login_name'

Имя сервера-участника, владеющего расписанием. @owner_login_name имеет имя sysname с значением по умолчаниюNULL, указывающее, что расписание принадлежит создателю.

[ @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.

Примеры

А. Создание графика

В следующем примере создается расписание с именем 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. В этом примере расписание подключается к заданиям 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