Что такое job в sql
View Job Step Information
В Управляемом экземпляре Azure SQL в настоящее время поддерживается большинство функций агента SQL Server (но не все). Подробные сведения см. в статье Различия в T-SQL между Управляемым экземпляром SQL Azure и SQL Server.
В данном разделе описано, как просмотреть сведения о шаге задания в окне «Свойства шага задания». Также предоставляются сведения о просмотре выходных данных шага задания.
Перед началом работы
Для просмотра сведений о шаге задания используется:
Перед началом
Ограничения
безопасность
Permissions
Использование среды SQL Server Management Studio
Просмотр сведений о шаге задания
В обозревателе объектов подключитесь к экземпляру Microsoft Компонент SQL Server Database Engine и разверните его.
Разверните узел Агент SQL Server, затем пункт Задания, щелкните правой кнопкой мыши задание, содержащее шаг, который следует просмотреть, и выберите пункт Свойства.
Щелкните шаг задания, который нужно просмотреть, и выберите Изменить.
На странице Общие окна Свойства шага задания можно видеть тип шага задания и его действие.
Просмотр выходных данных шага задания
Кнопка Просмотр недоступна, если выходные данные шагов задания записываются в файл. Чтобы просмотреть файл вывода шага задания, используйте блокнот.
sp_help_jobhistory (Transact-SQL)
Предоставляет сведения о заданиях серверов в многосерверном административном домене.
Синтаксические обозначения в Transact-SQL
Синтаксис
Аргументы
[ @job_id = ] job_id Идентификационный номер задания. job_id имеет тип uniqueidentifier и значение по умолчанию NULL.
[ @job_name = ] ‘job_name’ Имя задания. Аргумент job_name имеет тип sysname и значение по умолчанию NULL.
[ @step_id = ] step_id Идентификационный номер шага. step_id имеет тип int и значение по умолчанию NULL.
[ @sql_message_id = ] sql_message_id Идентификационный номер сообщения об ошибке, возвращенного Microsoft SQL Server при выполнении задания. sql_message_id имеет тип int и значение по умолчанию NULL.
[ @sql_severity = ] sql_severity Степень серьезности сообщения об ошибке, возвращаемого SQL Server при выполнении задания. sql_severity имеет тип int и значение по умолчанию NULL.
[ @start_run_date = ] start_run_date Дата запуска задания. start_run_date имеет тип int и значение по умолчанию NULL. start_run_date должны быть указаны в формате ГГГГММДД, где YYYY — год из четырех символов, mm — имя месяца из двух символов, а дд — двузначное имя дня.
[ @end_run_date = ] end_run_date Дата завершения задания. end_run_date имеет тип int и значение по умолчанию NULL. end_run_date необходимо указать в формате ГГГГММДД, где гггг — это четырехзначный год, а mm — имя месяца из двух символов, а дд — двузначное имя дня.
[ @start_run_time = ] start_run_time Время запуска задания. start_run_time имеет тип int и значение по умолчанию NULL. start_run_time должны быть указаны в формате ЧЧММСС, где ЧЧ — 2-символьный час дня, mm — это две минуты дня, а SS — двузначное значение дня.
[ @end_run_time = ] end_run_time Время завершения выполнения задания. end_run_time имеет тип int и значение по умолчанию NULL. end_run_time должны быть указаны в формате ЧЧММСС, где ЧЧ — 2-символьный час дня, mm — это две минуты дня, а SS — двузначное значение дня.
[ @minimum_run_duration = ] minimum_run_duration Минимальный период времени для завершения задания. minimum_run_duration имеет тип int и значение по умолчанию NULL. minimum_run_duration должны быть указаны в формате ЧЧММСС, где ЧЧ — 2-символьный час дня, mm — это две минуты дня, а SS — двузначное значение дня.
[ @run_status = ] run_status Состояние выполнения задания. run_status имеет тип int, значение по умолчанию NULL и может принимать одно из следующих значений.
Значение | Описание |
---|---|
0 | Сбой |
1 | Выполнено |
2 | Повторить (только для этапа) |
3 | Отменено |
4 | Сообщение о проценте выполнения |
5 | Неизвестно |
[ @minimum_retries = ] minimum_retries Минимальное число повторных попыток выполнения задания. minimum_retries имеет тип int и значение по умолчанию NULL.
[ @oldest_first = ] oldest_first Указывает, следует ли выводить выходные данные сначала с самыми старыми заданиями. oldest_first имеет тип int и значение по умолчанию 0, которое сначала представляет последние задания. 1 в первую очередь представляет самые старые задания.
[ @server = ] ‘server’ Имя сервера, на котором было выполнено задание. Server имеет тип nvarchar (30) и значение по умолчанию NULL.
[ @mode = ] ‘mode’ Определяет, будет ли SQL Server печатать все столбцы в результирующем наборе (полная) или сводку по столбцам. mode имеет тип varchar (7) и значение по умолчанию Summary.
Значения кода возврата
0 (успешное завершение) или 1 (сбой)
Результирующие наборы
Реальный список столбцов зависит от значения mode. Наиболее полный набор столбцов показан ниже и возвращается, если режим заполнен.
Имя столбца | Тип данных | Описание |
---|---|---|
instance_id | int | Идентификационный номер записи журнала. |
job_id | uniqueidentifier | Идентификатор задания. |
job_name | sysname | Имя задания. |
step_id | int | Идентификационный номер шага (для журнала заданий будет равен 0 ). |
step_name | sysname | Имя этапа (NULL для журнала заданий). |
sql_message_id | int | Для шага Transact-SQL — самый последний номер ошибки Transact-SQL, обнаруженный при выполнении команды. |
sql_severity | int | Для шага Transact-SQL — самая высокая степень серьезности ошибки Transact-SQL, обнаруженная при выполнении команды. |
message | nvarchar(1024) | Запись в журнале о задании или этапе. |
run_status | int | Результат задания или этапа. |
run_date | int | Дата начала выполнения задания или этапа. |
run_time | int | Дата начала выполнения задания или этапа. |
run_duration | int | Время, прошедшее с момента запуска задания или этапа в формате «ЧЧММСС». |
operator_emailed | nvarchar (20) | Оператор, которому было отправлено электронное письмо относительно этого задания (NULL для журнала этапов). |
operator_netsent | nvarchar (20) | Оператор, которому было отправлено сетевое сообщение относительно этого задания (NULL для журнала этапов). |
operator_paged | nvarchar (20) | Оператор, которому было отправлено сообщение на пейджер относительно этого задания (NULL для журнала этапов). |
retries_attempted | int | Количество повторных попыток запуска этапа (всегда 0 для журнала заданий). |
server | nvarchar(30) | Сервер, на котором выполняется задание или этап. Всегда имеет (Local). |
Замечания
sp_help_jobhistory возвращает отчет с историей указанных запланированных заданий. Если не указаны параметры, отчет содержит журнал всех заданий в расписании.
Разрешения
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
Дополнительные сведения о разрешениях этих ролей см. в разделе Предопределенные роли базы данных агента SQL Server.
Члены роли базы данных SQLAgentUserRole могут только просматривать журнал для заданий, которыми они владеют.
Примеры
A. Вывод всех сведений о задании
Б. Вывод сведений о заданиях, которые соответствуют определенным условиям
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 уже существуют.
Задания SQL¶
SQL Editor¶
Редактор SQL поддерживает SQL 2003 и соответствует стандарту Spark SQL. В левой части страницы SQL Editor можно выполнить следующие операции:
Databases — на данной вкладке отображаются все созданные базы данных.
Queues — на данной вкладке отображаются все созданные очереди.
— нажмите на значок, чтобы создать базу данных, таблицу или очередь.
— нажмите на значок, чтобы обновить список баз данных, таблиц или очередей.
— фильтрация по имени базы данных или таблицы.
Queues — из раскрывающегося списка выберите нужную очередь.
Databases — из раскрывающегося списка выберите нужную базу данных.
Execute — нажмите кнопку для запуска SQL-задания.
Format — форматирование SQL-выражений.
Syntax Reference — нажмите, чтобы открыть справочник по синтаксису SQL.
Settings — можно задать свойства для представленных заданий SQL в формате ключ/значение (keu/value). Подробности смотрите в справочнике API Submitting a SQL Job (Recommended). Можно установить до 10 атрибутов.
More — включает в себя следующие опции:
Verify Syntax — проверка правильности SQL-выражений.
Save as Template — сохранение SQL-выражений в качестве образца.
Choose Template — выбор сохраненного ранее образца.
Change Theme — смена темы редактора со светлой на темную и наоборот.
Клавиши быстрого доступа:
Под окном редактора SQL можно увидеть запросы за последнюю неделю (вкладка Executed Queries (Last 7 Days) ) и посмотреть результат выполнения операции ( View Result ):
Создание задания SQL¶
Также к редактору SQL можно перейти из раздела Job Management :
Просмотр заданий SQL¶
На данной странице можно посмотреть подробности операций с базами данных и таблицами SQL. Для удобства поиска нужных заданий можно воспользоваться функциями фильтрации таблицы:
Name — фильтрация по имени очереди.
Date — фильтрация по дате выполнения задания.
Statement / Job ID — фильтрация по SQL-выражению или ID-номеру задания.
— обновление списка заданий.
Created — сортировка по убыванию (Descending) или возрастанию (Ascending) даты создания.
Job Type — сортировка по типу задания.
Status — сортировка по статусу задания.
Duration — сортировка по убыванию (Descending) или возрастанию (Ascending) длительности выполнения задания.
Управление заданиями SQL¶
На данной странице можно выполнить следующие операции:
SparkUI — после нажатия этой кнопки отобразится страница выполнения задания Spark.
Данная функция доступна только для пользовательских очередей (не для default) и для заданий асинхронных запросов.
Export Log — экспорт журнала логов.
Данная функция доступна только для пользовательских очередей (не для default) и для заданий асинхронных запросов.
Что такое job в 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. С его помощью над ними можно осуществлять различные действия. Для начала попробуем создать новое задание. В нашем случае для этого, нужно применить следующую процедуру пакета:
Опишем параметры этой процедуры:
Если вы введёте дату меньше чем текущую, то выполнение задания может начаться немедленно или отложится на неопределённое время. В этом случае попробуйте принудительно запустить задание или повторно изменить этот параметр, это инициирует немедленный запуск задания.
Формула интервала | Описание |
---|---|
NULL | Задание выполнится однократно и удалится. |
TRUNC(SYSDATE+1)+n/24 | Задание будет выполняться ровно в n часов каждого дня |
TRUNC(SYSDATE+1)+(n+(m/60))/24 |