Джобы в sql что это
Джобы в sql что это
Задания ( jobs ) — это наиболее часто используемое средство автоматизации административных операций. Задания можно определить как именованные наборы действий, которые можно запланировать для выполнения по расписанию (а можно выполнять и вручную). На многих рабочих серверах на предприятиях существует сложная система заданий, при помощи которых выполняется множество операций: резервное копирование, проверка целостности, дефрагментация и перестроение индексов, загрузка и выгрузка данных, генерация страниц HTML и т. п. Задания могут создаваться и в автоматическом режиме, например, при настройке доставки журналов или репликации.
Рис. 8.1. Окно свойств задания SQL Server Agent
Очень часто возникает необходимость скопировать задания с одного сервера на другой, чтобы упростить автоматизацию выполнения схожих операций. Проще всего сделать это так: в контекстном меню для созданного задания нужно выбрать команду Script Job As | CREATE TO | New Query Editor Window (Отскриптовать задание как | Создать | Новое окно редактора запросов). В результате в окно редактора кода будет загружен скрипт с командами на создание задания с аналогичными параметрами. Вам останется только исправить некоторые параметры в этом скрипте, сохранить его и запустить на выполнение на другом сервере.
Теперь рассмотрим параметры, которые можно настроить для создаваемого задания. На вкладке General вы можете настроить или просмотреть общие параметры для задания:
q Category (Категория) — этот параметр ни на что не влияет. Используется для группировки заданий и для их сортировки при отображении в Management Studio ;
q Description (Описание) — простое описание задания, например заметки, которые администратор делает для самого себя, чтобы не забыть, для чего предназначено это задание;
q Enabled (Включено) — если задание в настоящее время вам не нужно, но может потребоваться потом, вы можете просто снять этот флажок. Отключенное задание выполняться не будет. Можно также отключить расписание для этого задания;
q Source (Источник) — в этом параметре можно просмотреть сервер, который запускает данное задание на выполнение ( master server ). Параметр используется только для мультисерверных заданий (которые могут выполняться на разных серверах). Подробнее про мультисерверные задания будет рассказываться в разд. 8.1.6;
q Created (Создано), Last modified (Изменено в последний раз), Last Executed (Запускалось в последний раз) — это, соответственно, время создания, время последнего изменения и время последнего запуска на выполнение для задания.
На вкладке Steps (Этапы) производится самая важная часть настройки заданий. Здесь нужно будет определить этапы ( steps ), т. е. действия, из которых состоит задание. Создание этапа производится при помощи кнопки New (Новый). Вам потребуется указать имя создаваемого этапа и выбрать его тип. Если отбросить типы этапов, которые начинаются с префикса Replication (задания с такими этапами практически всегда создаются автоматически при настройке репликации), то в вашем распоряжении следующие варианты:
Отметим некоторые моменты, связанные с этим типом этапов:
· если вам нужны программные конструкции — циклы, проверки значений и т. п., то нужно использовать этот тип этапа;
· лучше всего, конечно, вначале написать и отладить скрипт при помощи специализированного средства (например, Sapien PrimalScript ), а затем скопировать его в окно свойств этапа;
q SQL Server Integration Services Package (Пакет SQL Server Integration Services ) — этот тип этапов позволяет выполнить по расписанию пакет SSIS ( DTS ). Это новый тип этапа, которого не было в SQL Server 2000 (в нем пакеты DTS можно было запускать из этапа CmdExec при помощи утилиты командной строки dtsrun ). Функциональность пакетов SSIS также очень велика. Подробнее про работу с SSIS будет рассказано в модуле 10;
q SQL Server Analysis Services Command (Команда SQL Server Analysis Services ) и SQL Server Analysis Services Query (Запрос SQL Server Analysis Services ) — эти типы задания позволяют выполнить, соответственно, команду или запрос к Analysis Services (ядру баз данных OLAP на SQL Server ).
Другие важные свойства для этапов можно определить при помощи вкладки Advanced :
q On success action (Действие при успехе) и On failure action (Действие при сбое) — эти параметры позволяют определить, что должно произойти, соответственно, после успешного или неуспешного (возникла ошибка) выполнения этого этапа. В вашем распоряжении три варианта (они одинаковые как для успешного завершения, так и для неуспешного):
· Go to the next step (Перейти к следующему этапу) — этот вариант используется по умолчанию для успешно завершившихся этапов;
· Quit the job reporting success (Выйти из задания, просигнализировав об успешном выполнении) — этот вариант предлагается использовать для последнего этапа, если он завершился успешно;
· Quit the job reporting failure (Выйти из задания, просигнализировав об ошибке) — это значение по умолчанию предлагается выбирать при возникновении ошибки в ходе выполнения этапа.
Рис. 8.2. Экран выбора первого этапа при запуске задания
q Retry attempts (Попытки повтора) — сколько раз SQL Server Agent будет пытаться повторить выполнение данного этапа, если его не удалось выполнить сразу;
q Retry intervals (Интервал повтора) — какая пауза будет сделана SQL Server Agent между попытками повторного выполнения (в минутах);
q Append output to existing file (Дописать результат к существующему файлу) — обычно этот параметр используется в тех случаях, когда вы хотите накапливать результаты выполнений этапов в каком-то файле;
q Append output to existing entry in table (Добавлять вывод к существующим записям в таблице) — если этот флажок установлен, то при каждом запуске задания в таблицу sysjobstepslogs будут добавляться новые строки. Если он снят, то при запуске задания будут удаляться все существовавшие до этого записи;
После того как вы определили нужные этапы задания, можно просмотреть их на вкладке Steps окна свойств задания. Обратите внимание, что вы можете менять этапы местами при помощи стрелок в нижней части экрана, а также определить этап, который будет запускаться первым (при запуске по расписанию).
Обычно следующее, что нужно сделать при создании задания, — подумать, нужно ли вам запускать это задание по расписанию. Если да, то нужно настроить расписание на вкладке Schedules (Расписания) свойств задания. Сама настройка расписания вряд ли требует каких-либо комментариев. Отметим только следующие моменты:
q в SQL Server 2005 предусмотрено четыре типа расписания (тип выбирается при помощи списка Schedule Type (Тип расписания) в окне свойств расписания):
· Recurring — повторяющееся действие, которое будет выполняться, например, каждый день, или каждую неделю, или каждый месяц;
· One time — действие будет выполнено только один раз;
· Start automatically when SQL Server Agent starts — задание будет запускаться автоматически каждый раз при запуске SQL Server Agent ;
· Start whenever the CPU become idle — задание будет запускаться во время простоя центрального процессора. Состояние простоя определяется на вкладке Advanced свойств SQL Server Agent ;
q чтобы задание сработало в соответствии с настроенным расписанием, необходимо, чтобы служба SQL Server Agent находилась в рабочем состоянии. Проверьте, настроен для нее режим автозапуска;
q с расписаниями можно работать отдельно от заданий. Фактически, это отдельный набор объектов. Чтобы открыть список всех имеющихся расписаний (с возможностью создания новых расписаний, изменения существующих и т. п.), можно воспользоваться командой Manage Schedules (Управлять расписаниями) контекстного меню для контейнера SQL Server Agent | Jobs ;
q если у вас уже есть подходящее расписание, но определенное для другого задания, создавать его заново не нужно. Достаточно воспользоваться кнопкой Pick (Выбрать) на вкладке Schedules и выбрать существующее расписание. Однако необходимо учитывать, что у расписания и у задания должен быть один и тот же владелец, поэтому таким способом можно выбрать только те расписания, владельцы которых совпадают с владельцем задания. Для выбора расписания достаточно выбрать в открывшемся окне Pick Schedule (Выбрать расписание) нужную строчку и нажать OK ;
q для одного задания можно настроить несколько расписаний. Во многих случаях это может быть очень удобно;
Часто бывает необходимо сделать так, чтобы задание по завершении само отчиталось о своем выполнении. Например, если у вас ночью проводится резервное копирование многих баз данных на нескольких серверах, то вы можете настроить соответствующие задания так, чтобы по окончании резервного копирования каждой базы данных отчет о нем отправлялся на почтовый ящик администратора. Просмотреть почтовые сообщения в почтовом ящике обычно проще, чем смотреть логи резервного копирования на всех серверах.
Настроить параметры «отчета» задания о своем завершении можно при помощи вкладки Notifications (Уведомления) свойств задания. На этой вкладке вы можете настроить следующие параметры:
· When the job fails — отправлять предупреждение только тогда, когда при выполнении задания возникла ошибка. Этот вариант выбирается по умолчанию;
· When the job succeeds — предупреждение будет отправляться только при успешном выполнении задания;
· When the job completes — предупреждение будет отправляться в любом случае;
q Write to the Windows Application event log (Записывать информацию о выполнении задания в журнал событий приложений Windows ) — такое решение можно использовать, например, если журналы событий Windows с разных серверов автоматически переносятся в базу данных или, например, в вашей сети работает приложение, которое автоматически отслеживает появление определенных записей в журналах событий Windows и предпринимает для них какие-либо действия (например, GFI SELM или EventTracker );
q Automatically delete job (Автоматически удалять задание) — при выборе этого варианта задание после выполнения само себя удалит. Обычно такое решение используется для заданий, которые выполняют разовые операции, например, создание базы данных-копии, в которую будут передаваться данные средствами доставки журналов или репликации.
На вкладке Targets (Назначения) свойств задания вы можете определить, на каких именно серверах будет выполняться это задание. Эта возможность доступна только для заданий на серверах, на которых настроен режим мультисерверного выполнения. Подробно про настройку этого режима говорится в разд. 8.1.6.
sp_add_job (Transact-SQL)
добавляет новое задание, выполняемое службой агента SQL.
Синтаксические обозначения в Transact-SQL
В Управляемом экземпляре Azure SQL в настоящее время поддерживается большинство функций агента SQL Server (но не все). Подробные сведения см. в статье Различия в T-SQL между Управляемым экземпляром SQL Azure и SQL Server.
Синтаксис
Аргументы
[ @job_name = ] ‘job_name’ Имя задания. Имя должно быть уникальным и не может содержать символ процента ( % ). job_name имеет тип nvarchar (128) и не имеет значения по умолчанию.
[ @enabled = ] enabled Указывает состояние добавленного задания. Enabled имеет тип tinyint и значение по умолчанию 1 (включено). Если значение равно 0, задание не включено и не выполняется в соответствии с расписанием. Однако его можно запустить вручную.
[ @description = ] ‘description’ Описание задания. Description имеет тип nvarchar (512) и значение по умолчанию NULL. Если Описание отсутствует, используется параметр «нет описания».
[ @start_step_id = ] step_id Идентификационный номер первого шага, выполняемого для задания. step_id имеет тип int и значение по умолчанию 1.
[ @category_name = ] ‘category’ Категория для задания. Category имеет тип sysname и значение по умолчанию NULL.
[ @category_id = ] category_id Независимый от языка механизм для указания категории заданий. category_id имеет тип int и значение по умолчанию NULL.
[ @notify_level_eventlog = ] eventlog_level значение, указывающее, когда следует поместить запись в журнал приложений Microsoft Windows для этого задания. eventlog_level имеет тип int и может принимать одно из следующих значений.
Значение | Описание |
---|---|
0 | Никогда |
1 | При успешном завершении |
2 (по умолчанию) | При сбое |
3 | Always (Всегда) |
[ @notify_level_email = ] email_level Значение, указывающее, когда следует отправить сообщение электронной почты после завершения этого задания. email_level имеет тип int и значение по умолчанию 0, что означает Never. email_level использует те же значения, что и eventlog_level.
[ @notify_level_netsend = ] netsend_level Значение, указывающее, когда следует отправить сетевое сообщение после завершения этого задания. netsend_level имеет тип int и значение по умолчанию 0, что означает Never. netsend_level использует те же значения, что и eventlog_level.
[ @notify_level_page = ] page_level Значение, указывающее, когда следует отправить страницу после завершения этого задания. page_level имеет тип int и значение по умолчанию 0, что означает Never. page_level использует те же значения, что и eventlog_level.
[ @notify_netsend_operator_name = ] ‘netsend_name’ Имя оператора, которому отправляется сетевое сообщение после завершения этого задания. Аргумент netsend_name имеет тип sysname и значение по умолчанию NULL.
[ @notify_page_operator_name = ] ‘page_name’ Имя пользователя, которому будет присвоена страница после завершения этого задания. Аргумент page_name имеет тип sysname и значение по умолчанию NULL.
[ @delete_level = ] delete_level Значение, указывающее, когда следует удалять задание. delete_value имеет тип int и значение по умолчанию 0, что означает никогда. delete_level использует те же значения, что и eventlog_level.
Если delete_level имеет значение 3, задание выполняется только один раз, независимо от всех расписаний, определенных для задания. Если в какой-то момент задание удаляет себя, журнал этого задания также удаляется.
[ @job_id = ] _job_idOUTPUT Идентификационный номер задания, назначенный заданию при успешном создании. job_id является выходной переменной типа uniqueidentifier и ЗНАЧЕНИЕМ по умолчанию NULL.
Значения кода возврата
0 (успешное завершение) или 1 (сбой)
Результирующие наборы
Remarks
@ originating_server существует в sp_add_job, но не указана в списке arguments. @ originating_server зарезервировано для внутреннего использования.
SQL Server Management Studio обеспечивает доступный графический способ управления заданиями и рекомендуется для создания и управления инфраструктурой заданий.
Разрешения
Для выполнения этой хранимой процедуры пользователи должны быть членами предопределенной роли сервера sysadmin или иметь одну из следующих SQL Server предопределенных ролей базы данных агента, которая находится в базе данных msdb :
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
сведения о конкретных разрешениях, связанных с каждой из этих предопределенных ролей базы данных, см. в разделе фиксированные роли базы данных агента SQL Server.
Примеры
A. Создание задания
Б. Создание задания с уведомлением по пейджеру, электронной почте и по сети
В данном примере предполагается, что оператор с именем François Ajenstat и имя входа françoisa уже существуют.
View a Job
В Управляемом экземпляре Azure SQL в настоящее время поддерживается большинство функций агента SQL Server (но не все). Подробные сведения см. в статье Различия в T-SQL между Управляемым экземпляром SQL Azure и SQL Server.
В этой статье описывается, как просматривать задания агента Microsoft SQL Server в SQL Server с помощью среды SQL Server Management Studio или Transact-SQL.
Перед началом
безопасность
Использование среды SQL Server Management Studio
Просмотр задания
В обозревателе объектов подключитесь к экземпляру компонента Компонент SQL Server Database Engineи разверните его.
Раскройте узел Агент SQL Server, а затем узел Задания.
Правой кнопкой мыши щелкните задание и выберите Свойства.
Использование Transact-SQL
Просмотр задания
В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.
Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.
Использование управляющих объектов SQL Server
Просмотр задания
Воспользуйтесь классом Job на любом языке программирования, таком как Visual Basic, Visual C# или PowerShell. Дополнительные сведения см. в статье Управляющие объекты SQL Server (SMO).
Создание задания
В Управляемом экземпляре Azure SQL в настоящее время поддерживается большинство функций агента SQL Server (но не все). Подробные сведения см. в статье Различия в T-SQL между Управляемым экземпляром SQL Azure и SQL Server.
В этой статье описывается создание задания агента SQL Server в SQL Server с помощью среды SQL Server Management Studio, Transact-SQL или управляющих объектов SQL Server (SMO).
Чтобы добавить шаги заданий, расписаний, предупреждений и уведомлений, которые можно отправить операторам, см. ссылки на разделы руководства.
Перед началом работы
Для создания задания используется
Перед началом
Ограничения
Назначение задания другому имени входа не гарантирует того, что новый владелец обладает достаточными разрешениями для успешного запуска задания.
безопасность
Чтобы изменить владельца задания, необходимо быть системным администратором.
Permissions
Использование среды SQL Server Management Studio
Создание задания агента SQL Server
В обозревателе объектов щелкните знак «плюс», чтобы развернуть сервер, на котором нужно создать задание агента SQL Server.
Щелкните знак «плюс», чтобы развернуть Агент SQL Server.
Щелкните правой кнопкой мыши папку Задания и выберите пункт Создать задание….
На странице Общие в диалоговом окне Создание задания измените общие свойства задания. Дополнительные сведения о параметрах, доступных на этой странице, см. в разделе Свойства задания — создание задания (страница «Общие»)
На странице Действия задайте шаги задания. Дополнительные сведения о параметрах, доступных на этой странице, см. в разделе Свойства задания — создание задания (страница «Шаги»)
На странице Расписания задайте расписания для задания. Дополнительные сведения о параметрах, доступных на этой странице, см. в разделе Свойства задания — создание задания (страница «Расписания»)
На странице Предупреждения задайте предупреждения для задания. Дополнительные сведения о параметрах, доступных на этой странице, см. в разделе Свойства задания — создание задания (страница «Предупреждения»)
На странице Уведомления задайте действия, которые должен выполнять агент Microsoft SQL Server после завершения задания. Дополнительные сведения о параметрах, доступных на этой странице, см. в разделе Свойства задания — создание задания (страница «Уведомления»).
Страница Цели используется для управления целевыми серверами в задании. Дополнительные сведения о параметрах, доступных на этой странице, см. в разделе Свойства задания — создание задания (страница «Цели»).
После завершения нажмите кнопку ОК.
Использование Transact-SQL
Создание задания агента SQL Server
В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.
На стандартной панели выберите пункт Создать запрос.
Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.
Дополнительные сведения см. в разделе:
Использование управляющих объектов SQL Server
Создание задания агента SQL Server
Вызовите метод Create класса Job на любом языке программирования, таком как Visual Basic, Visual C# или PowerShell. Пример кода см. в разделе Планирование автоматических административных задач в агенте SQL Server.
Джобы в sql что это
Задания в Oracle9i
В Oracle существует возможность запланировать выполнение определенного набора действий в виде заданий. Задание может, представляет собой хранимую процедуру, анонимный блок PL /SQL, внешнюю процедуру на языке C или Java. Время выполнения может иметь значение любого времени суток и подчинятся заданному интервалу. Это хорошо подходит для переноса тяжёлых в обработке расчётов на менее загруженное ночное время. По умолчанию выполнение заданий выключено. Поэтому надо провести небольшую дополнительную настройку сервера.
Настройка сервера
Для того чтобы задания начались выполняться необходимо, установить параметр инициализации JOB_QUEUE_PROCESSES. Изначально он имеет значение 0 и задаёт максимальное количество фоновых процессов для выполнения заданий. В версии Oracle 9.2 максимальное значение этого параметра может составлять 1000. На практике же обычно можно ограничиться не более 5 процессами. В любом случае вы всегда можете изменить это значение с помощью команды ALTER SYSTEM SET без перезагрузки сервера. Итак, для начала внесем новую строчку в файл инициализации и перезагрузим сервер:
В файле alert.log мы увидим, что в момент, когда стартуют фоновые процессы, у нас появилось новая запись:
Это стартовал новый фоновый процесс CJQ0, так называемый координатор заданий. Что он делает и для чего он нужен, мы рассмотрим чуть ниже, а на этом предварительную настройку сервера можно считать законченной.
Процессы
Итак, процесс координатора заданий запущен, и как можно догадаться из его названия именно этот процесс осуществляет общее управление всеми заданиями. Для начала он выбирает таблицу SYS.JOB$, в которой хранятся параметры заданий. Если среди заданий имеются те, которые будут выполняться в ближайший интервал времени указанный в скрытом параметре _JOB_QUEUE_INTERVAL (по умолчанию его значение составляет 5 секунд), то для них порождаются фоновые процессы очереди заданий Jnnn, которые в свою очередь создают сеансы для непосредственного выполнения запланированных действий. Именно максимальное количество процессов Jnnn, которые могут быть одновременно запущены и отражает настраиваемый параметр JOB_QUEUE_PROCESSES.
После того как выбранным заданиям были выделены процессы Jnnn, координатор выжидает интервал времени, указанный в параметре _JOB_QUEUE_INTERVAL. Процессы заданий в тоже время продолжают работать. После выполнения задания процесс Jnnn считается свободным, и координатор распределяет его на выполнение другого задания. Если такого задания не находится в течение определенного времени, то процесс Jnnn уничтожается. В случае, когда процессов Jnnn не хватает, задание будет выполнено в тот момент времени, когда один из них освободится.
Выставляйте значение параметра JOB_QUEUE_PROCESSES чуть больше максимального количества одновременно запускаемых заданий. Маленькое значение может привести к сдвигу времени выполнения из-за конкуренции за процессы Jnnn. Большое значение к неоправданному запуску этих же процессов в исключительных ситуациях.
Создание заданий
Для управления заданиями в Oracle существует специальный пакет DBMS_JOB. С его помощью над ними можно осуществлять различные действия. Для начала попробуем создать новое задание. В нашем случае для этого, нужно применить следующую процедуру пакета:
Опишем параметры этой процедуры:
Если вы введёте дату меньше чем текущую, то выполнение задания может начаться немедленно или отложится на неопределённое время. В этом случае попробуйте принудительно запустить задание или повторно изменить этот параметр, это инициирует немедленный запуск задания.