Создание заданий
В Управляемом экземпляре Azure SQL в настоящее время поддерживается большинство функций агента SQL Server (но не все). Подробные сведения см. в статье Различия в T-SQL между Управляемым экземпляром SQL Azure и SQL Server.
Задание — это определенная последовательность действий, выполняемых агентом SQL Server. Задание может выполнять широкий диапазон действий, например запуск скриптов Transact-SQL, приложений командной строки, скриптов Microsoft ActiveX, пакетов Integration Services, команд и запросов Analysis Services и задач репликации. Задания могут запускать повторяющиеся или запланированные задачи, они могут автоматически уведомлять пользователей о состоянии задания, формируя предупреждения и тем самым значительно упрощают администрирование SQL Server.
Чтобы создать задание, пользователь должен быть членом одной из предопределенных ролей базы данных агента SQL Server или членом предопределенной роли сервера sysadmin . Задание может быть изменено его владельцем или членом роли sysadmin . Члены роли sysadmin могут предоставлять права владения заданием другим пользователям, а также запускать любое задание, независимо от того, кто является его владельцем. Дополнительные сведения о предопределенных ролях базы данных агента SQL Server см. в разделе Предопределенные роли базы данных агента SQL Server.
Задания могут выполняться на локальном экземпляре SQL Server или быть распределены по нескольким экземплярам, работающим на предприятии. Для запуска заданий на нескольких серверах необходимо установить, по крайней мере, один главный сервер и один или несколько целевых. Дополнительные сведения о главных и целевых серверах см. в статье Автоматизация администрирования в масштабах предприятия
SQL Server Агент записывает сведения о задании и шагах задания в журнал заданий.
Связанные задачи
| Описание | Раздел |
|---|---|
| Описывает создание задания агента SQL Server. | Создание задания |
| Описывает переназначение владения заданиями агента SQL Server другому пользователю. | Give Others Ownership of a Job |
| Описывает настройку журнала заданий агента SQL Server. | Set Up the Job History Log |
Что такое job в sql
SQL Server y Programación Orientada a Objetos, .NET, Visual Basic, Bases de Datos, Electrónica y mucho más.
Páginas
sábado, 30 de enero de 2016
Crear trabajos (Jobs) con SQL Server 2014
Un trabajo (job) o tarea de SQL Server, es un proceso automático que se ejecuta automáticamente en una programación establecida bajo control del Agente SQL Server. Mediante el uso del Agente SQL Server para programar, se puede determinar cuándo y en qué orden se realizarán las tareas administrativas.
Las tareas que se programan suelen ser tareas que requieren mucho tiempo y suelen programarse por la noche cuando la base de datos no está en uso o su uso es más bajo.
Para crear una nueva tarea programada debemos ir al explorador de objetos del administrador de SQL Server y desplegar el agente de SQL Server, si desplegamos la carpeta trabajos podemos ver los trabajos que hay creados.

Si deseamos crear un nuevo trabajo, pulsamos el botón derecho del ratón y sobre el menú que se muestra elegimos Nuevo trabajo.

Esto nos muestra un cuadro de diálogo con varias páginas, en la imagen de abajo se muestra la página principal (general) donde podemos teclear el nombre del nuevo trabajo, elegir el propietario añadir una descripción de dicho trabajo y chequear si el trabajo estará habilitado o no.

En la siguiente página o pestaña, la de pasos, podemos dar de alta varios pasos que se ejecutarán secuencialmente cuando se ejecute la tarea. Para añadir un nuevo paso pulsamos el botón Nuevo.

Esta acción nos abre otro cuadro de diálogo que a su vez cuenta con dos páginas. En la general podemos poner un nombre al paso, elegir el tipo de comando que ejecutaremos, normalmente será Transact SQL pero se pueden elegir varios tipos. También especificamos la base de datos sobre la que se ejecutará el trabajo. Finalmente en la parte en blanco podemos escribir el comando a ejecutar. Por ejemplo un EXECUTE de un procedimiento almacenado.

Hecho esto, regresamos al cuadro de diálogo inicial y si pulsamos sobre la tercera página (la de programaciones) se abre el cuadro mostrado a continuación.

Este cuadro nos permite programar la ejecución del trabajo, es decir si será periódico o no, si se ejecutará todos los días o por semanas, por meses, etc.
También podemos especificar la fecha de finalización. También podemos indicar a qué hora se realizará y en qué fecha comenzará.
Una vez hemos creado la tarea podemos visualizar si se está ejecutando normalmente o si se ha producido algún problema. Para ello, pulsamos el botón derecho del ratón sobre el explorador de objetos y sobre el menú que se muestra elegimos Ver historial.

Esta acción abre una pantalla donde podemos elegir el trabajo y nos muestra un listado de las veces que se ha ejecutado y si la ejecución ha sido correcta o se ha producido algún problema.

José Pedro Pascual en 9:00
2 comentarios:
como activo el SQL AGENT en sql server 2014 Responder Eliminar
Cómo iniciar el Agente SQL Server (Administrador de configuración de SQL Server)
Otras versiones
El Agente SQL Server se puede detener e iniciar desde el Administrador de configuración de SQL Server.
Para iniciar el servicio del Agente SQL Server
En el menú Inicio, seleccione Todos los programas, seleccione Microsoft SQL Server 2008 R2, seleccione Herramientas de configuración y, a continuación, haga clic en Administrador de configuración de SQL Server.
En Administrador de configuración de SQL Server, expanda Servicios y, a continuación, haga clic en Agente SQL.
En el panel de resultados, haga clic con el botón secundario en una instancia y, a continuación, haga clic en Iniciar.
Una flecha verde en el icono que aparece junto al Agente SQL Server y en la barra de herramientas indica que el Agente SQL Server se inició correctamente.
Haga clic en Aceptar. Responder Eliminar
MSSQL — получить список JOB с помощью SQL запроса

Пример вывода списка заданий JOB с помощью запроса из системных таблиц. Запрос выводит только те задания, которые созданы в Database Maintenance.
Если вам нужны все, то уберите «AND [sCAT].[name] = N’Database Maintenance'» из запроса.
USE msdb GO SELECT [sJOB].[name] AS [JobName] , [sDBP].[name] AS [JobOwner] , [sCAT].[name] AS [JobCategory] , [sJOB].[description] AS [JobDescription] , [sJSTP].[step_id] AS [JobStartStepNo] , [sJSTP].[step_name] AS [JobStartStepName] , [sJOB].[date_created] AS [JobCreatedOn] , [sJOB].[date_modified] AS [JobLastModifiedOn] , CASE [sJOB].[enabled] WHEN 1 THEN 'Yes' WHEN 0 THEN 'No' END AS [IsEnabled] , CASE WHEN [sSCH].[schedule_uid] IS NULL THEN 'No' ELSE 'Yes' END AS [IsScheduled] , CASE WHEN [freq_type] = 64 THEN 'Start automatically when SQL Server Agent starts' WHEN [freq_type] = 128 THEN 'Start whenever the CPUs become idle' WHEN [freq_type] IN (4, 8, 16, 32) THEN 'Recurring' WHEN [freq_type] = 1 THEN 'One Time' END [ScheduleType] , CASE [freq_type] WHEN 1 THEN 'One Time' WHEN 4 THEN 'Daily' WHEN 8 THEN 'Weekly' WHEN 16 THEN 'Monthly' WHEN 32 THEN 'Monthly - Relative to Frequency Interval' WHEN 64 THEN 'Start automatically when SQL Server Agent starts' WHEN 128 THEN 'Start whenever the CPUs become idle' END [Occurrence] , CASE [freq_type] WHEN 4 THEN 'Occurs every ' + CAST([freq_interval] AS VARCHAR(3)) + ' day(s)' WHEN 8 THEN 'Occurs every ' + CAST([freq_recurrence_factor] AS VARCHAR(3)) + ' week(s) on ' + CASE WHEN [freq_interval] & 1 = 1 THEN 'Sunday' ELSE '' END + CASE WHEN [freq_interval] & 2 = 2 THEN ', Monday' ELSE '' END + CASE WHEN [freq_interval] & 4 = 4 THEN ', Tuesday' ELSE '' END + CASE WHEN [freq_interval] & 8 = 8 THEN ', Wednesday' ELSE '' END + CASE WHEN [freq_interval] & 16 = 16 THEN ', Thursday' ELSE '' END + CASE WHEN [freq_interval] & 32 = 32 THEN ', Friday' ELSE '' END + CASE WHEN [freq_interval] & 64 = 64 THEN ', Saturday' ELSE '' END WHEN 16 THEN 'Occurs on Day ' + CAST([freq_interval] AS VARCHAR(3)) + ' of every ' + CAST([freq_recurrence_factor] AS VARCHAR(3)) + ' month(s)' WHEN 32 THEN 'Occurs on ' + CASE [freq_relative_interval] WHEN 1 THEN 'First' WHEN 2 THEN 'Second' WHEN 4 THEN 'Third' WHEN 8 THEN 'Fourth' WHEN 16 THEN 'Last' END + ' ' + CASE [freq_interval] WHEN 1 THEN 'Sunday' WHEN 2 THEN 'Monday' WHEN 3 THEN 'Tuesday' WHEN 4 THEN 'Wednesday' WHEN 5 THEN 'Thursday' WHEN 6 THEN 'Friday' WHEN 7 THEN 'Saturday' WHEN 8 THEN 'Day' WHEN 9 THEN 'Weekday' WHEN 10 THEN 'Weekend day' END + ' of every ' + CAST([freq_recurrence_factor] AS VARCHAR(3)) + ' month(s)' END AS [Recurrence] , CASE [freq_subday_type] WHEN 1 THEN 'Occurs once at ' + STUFF(STUFF(RIGHT('000000' + CAST([active_start_time] AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':') WHEN 2 THEN 'Occurs every ' + CAST([freq_subday_interval] AS VARCHAR(3)) + ' Second(s) between ' + STUFF(STUFF(RIGHT('000000' + CAST([active_start_time] AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':') + ' & ' + STUFF(STUFF(RIGHT('000000' + CAST([active_end_time] AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':') WHEN 4 THEN 'Occurs every ' + CAST([freq_subday_interval] AS VARCHAR(3)) + ' Minute(s) between ' + STUFF(STUFF(RIGHT('000000' + CAST([active_start_time] AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':') + ' & ' + STUFF(STUFF(RIGHT('000000' + CAST([active_end_time] AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':') WHEN 8 THEN 'Occurs every ' + CAST([freq_subday_interval] AS VARCHAR(3)) + ' Hour(s) between ' + STUFF(STUFF(RIGHT('000000' + CAST([active_start_time] AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':') + ' & ' + STUFF(STUFF(RIGHT('000000' + CAST([active_end_time] AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':') END [Frequency] , [sSCH].[name] AS [JobScheduleName] , LastRun = CONVERT(DATETIME, RTRIM(run_date) + ' ' + STUFF(STUFF(REPLACE(STR(RTRIM(h.run_time),6,0),' ','0'),3,0,':'),6,0,':')) , CASE [sJSTP].Last_run_outcome WHEN 0 THEN 'Failed' WHEN 1 THEN 'Succeeded' WHEN 2 THEN 'Retry' WHEN 3 THEN 'Canceled' WHEN 5 THEN 'Unknown' END AS LastRunStatus , LastRunDuration = STUFF(STUFF(REPLACE(STR([sJSTP].last_run_duration,7,0),' ','0'),4,0,':'),7,0,':') , MaxDuration = STUFF(STUFF(REPLACE(STR(l.run_duration,7,0),' ','0'),4,0,':'),7,0,':') , NextRun = CONVERT(DATETIME, RTRIM(NULLIF([sJOBSCH].next_run_date, 0)) + ' ' + STUFF(STUFF(REPLACE(STR(RTRIM([sJOBSCH].next_run_time),6,0),' ','0'),3,0,':'),6,0,':')) , CASE [sJOB].[delete_level] WHEN 0 THEN 'Never' WHEN 1 THEN 'On Success' WHEN 2 THEN 'On Failure' WHEN 3 THEN 'On Completion' END AS [JobDeletionCriterion] , [sSVR].[name] AS [OriginatingServerName] , [sJSTP].subsystem AS Subsystem , [sJSTP].command AS Command , h.message AS Message FROM [msdb].[dbo].[sysjobs] AS [sJOB] LEFT JOIN [msdb].[sys].[servers] AS [sSVR] ON [sJOB].[originating_server_id] = [sSVR].[server_id] LEFT JOIN [msdb].[dbo].[syscategories] AS [sCAT] ON [sJOB].[category_id] = [sCAT].[category_id] LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sJSTP] ON [sJOB].[job_id] = [sJSTP].[job_id] AND [sJOB].[start_step_id] = [sJSTP].[step_id] LEFT JOIN [msdb].[sys].[database_principals] AS [sDBP] ON [sJOB].[owner_sid] = [sDBP].[sid] LEFT JOIN [msdb].[dbo].[sysjobschedules] AS [sJOBSCH] ON [sJOB].[job_id] = [sJOBSCH].[job_id] LEFT JOIN [msdb].[dbo].[sysschedules] AS [sSCH] ON [sJOBSCH].[schedule_id] = [sSCH].[schedule_id] LEFT JOIN ( SELECT job_id, instance_id = MAX(instance_id), MAX(run_duration) AS run_duration FROM msdb.dbo.sysjobhistory GROUP BY job_id ) AS l ON sJOB.job_id = l.job_id LEFT JOIN msdb.dbo.sysjobhistory AS h ON h.job_id = l.job_id AND h.instance_id = l.instance_id ORDER BY [JobName]
- [JobName]: название задания агента SQL Server.
- [JobOwner]: владелец задания.
- [JobCategory]: категория, к которой относится задание, например моментальный снимок репликации, обслуживание базы данных, отправка журналов и т.д.
- [JobDescription]: описание задания.
- [JobStartStepNo]: номер шага, из которого задано задание для запуска.
- [JobStartStepName]: имя шага, с которого задание начинается.
- [JobCreatedOn]: дата и время создания задания.
- [JobLastModifiedOn]: дата и время последнего изменения задания.
- [IsEnabled]: индикатор, показывающий, включено ли задание.
- [IsScheduled]: индикатор, указывающий, запланировано ли задание или нет.
- [ScheduleType]: тип расписания.
- [Occurrence]: график задания, такого как Ежедневный, Еженедельный, Ежемесячный и т.д.
- [Recurrence]: повторение графика.
- [Frequency]: как часто задание должно выполняться.
- [JobScheduleName]: имя расписания, связанного с заданием.
- [LastRun]: дата и время выполнения задания в последний раз (соответствует самому последнему запуску).
- [LastRunStatus]: состояние или результат последнего запуска задания.
- [LastRunDuration]: Продолжительность последнего выполнения задания.
- [MaxDuration]: максимальная продолжительность задания.
- [NextRun]: дата и время следующего запуска.
- [JobDeletionCriterion]: критерий для удаления задания.
- [OriginatingServerName]: сервер, с которого выполнялось задание.
- [Subsystem]: тип операции, например, интеграция с SQL Server Пакет услуг, Transact-SQL Script (T-SQL), ActiveX Script и т.д.
- [Command]: фактическая команда, которая будет выполнена.
- [Message]: информация о успехе/неудаче работы и т.д.
Статус заданий SQL Server Agent (Jobs)


Сегодня я бы хотел поговорить о такой не распространённой теме, как статус задания SQL Server Agent, хотя это бывает очень необходимо. Есть несколько способов узнать статус текущий заданий SQL Server Agent:
Способ первый:
Самый очевидный и простой способ узнать статус заданий SQL Server Agent это запустить Job Activity Monitor в SQL Server Management Studio, который находится в закладке SQL Server Agent:

Двойной клик на Job Activity Monitor откроет новое окно со статусом всех заданий, возможна сортировка по нужной вам колонке.
Способ второй:
Использование оснастки очень удобно, но бывает, что нам необходимо получить ту же самую информацию, а возможно и больше, через скрипты. Здесь так же есть несколько вариантов.
Использование процедуры sp_help_job:
