Compartir vía


sp_add_job (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Crea un nuevo trabajo ejecutado por el servicio Agente SQL Server.

Convenciones de sintaxis de Transact-SQL

Importante

En Azure SQL Managed Instance, actualmente son compatibles la mayoría de las características del Agente SQL Server. Consulte Diferencias entre T-SQL de Azure SQL Managed Instance y SQL Server para más información.

Sintaxis

sp_add_job
         [ @job_name = ] N'job_name'
     [ , [ @enabled = ] enabled ]
     [ , [ @description = ] N'description' ]
     [ , [ @start_step_id = ] step_id ]
     [ , [ @category_name = ] 'category' ]
     [ , [ @category_id = ] category_id ]
     [ , [ @owner_login_name = ] 'login' ]
     [ , [ @notify_level_eventlog = ] eventlog_level ]
     [ , [ @notify_level_email = ] email_level ]
     [ , [ @notify_level_netsend = ] netsend_level ]
     [ , [ @notify_level_page = ] page_level ]
     [ , [ @notify_email_operator_name = ] 'email_name' ]
     [ , [ @notify_netsend_operator_name = ] 'netsend_name' ]
     [ , [ @notify_page_operator_name = ] 'page_name' ]
     [ , [ @delete_level = ] delete_level ]
     [ , [ @job_id = ] job_id OUTPUT ]
[ ; ]

Argumentos

@job_name

Nombre del trabajo. El nombre debe ser único y no puede contener el carácter de porcentaje (%). @job_name es nvarchar(128), sin ningún valor predeterminado. Necesario.

@enabled

Indica el estado del trabajo agregado. enabled es tinyint, con un valor predeterminado de 1 (habilitado). Si 0es , el trabajo no está habilitado y no se ejecuta según su programación; sin embargo, se puede ejecutar manualmente.

@description

Descripción del trabajo. @description es nvarchar(512), con un valor predeterminado de NULL. Si se omite @description , N'No description available' se usa .

@start_step_id

Número de identificación del primer paso que se va a ejecutar para el trabajo. @start_step_id es int, con un valor predeterminado de 1.

@category_name

Categoría del trabajo. @category_name es sysname, con un valor predeterminado de NULL.

@category_id

Mecanismo independiente del idioma para especificar una categoría de trabajo. @category_id es int, con un valor predeterminado de NULL.

@owner_login_name

Nombre del inicio de sesión al que pertenece el trabajo. @owner_login_name es sysname, con un valor predeterminado de NULL, que se interpreta como el nombre de inicio de sesión actual. Solo los miembros del rol fijo de servidor sysadmin pueden establecer o cambiar el valor de @owner_login_name. Si los usuarios que no son miembros del rol sysadmin establecen o cambian el valor de @owner_login_name, se produce un error en la ejecución de este procedimiento almacenado y se devuelve un error.

@notify_level_eventlog

Valor que indica cuándo se debe incluir una entrada para este trabajo en el registro de aplicación de Microsoft Windows. @notify_level_eventlog es int y puede ser uno de estos valores:

Valor Descripción
0 Nunca
1 En caso de éxito
2 (valor predeterminado) En caso de error
3 Siempre

@notify_level_email

Valor que indica cuándo se debe enviar un mensaje de correo electrónico para notificar la finalización del trabajo. @notify_level_email es int, con un valor predeterminado de 0, que indica nunca. @notify_level_email usa los mismos valores que @notify_level_eventlog.

@notify_level_netsend

Valor que indica cuándo se debe enviar un mensaje de red para notificar la finalización del trabajo. @notify_level_netsend es int, con un valor predeterminado de 0, que indica nunca. @notify_level_netsend usa los mismos valores que @notify_level_eventlog.

@notify_level_page

Valor que indica cuándo se debe enviar una página para notificar la finalización del trabajo. @notify_level_page es int, con un valor predeterminado de 0, que indica nunca. @notify_level_page usa los mismos valores que @notify_level_eventlog.

@notify_email_operator_name

Nombre de correo electrónico de la persona a la que se va a enviar un correo electrónico cuando se llega a @notify_email_operator_name . @notify_email_operator_name es sysname, con un valor predeterminado de NULL.

@notify_netsend_operator_name

Nombre del operador al que se enviará el mensaje de red al finalizar este trabajo. @notify_netsend_operator_name es sysname, con un valor predeterminado de NULL.

@notify_page_operator_name

Nombre de la persona a la que se enviará un mensaje por localizador al finalizar este trabajo. @notify_page_operator_name es sysname, con un valor predeterminado de NULL.

@delete_level

Valor que indica cuándo se va a eliminar el trabajo. delete_value es int, con un valor predeterminado de 0, lo que significa nunca. @delete_level usa los mismos valores que @notify_level_eventlog.

Nota:

Cuando @delete_level es 3, el trabajo se ejecuta solo una vez, independientemente de las programaciones definidas para el trabajo. Además, si un trabajo se elimina a sí mismo, también se elimina todo el historial de trabajos.

@job_id SALIDA

Número de identificación que se ha asignado al trabajo si este se ha creado correctamente. @job_id es una variable de salida de tipo uniqueidentifier, con un valor predeterminado de NULL.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Conjunto de resultados

Ninguno.

Comentarios

@originating_server existe en sp_add_job, pero no aparece en Argumentos. @originating_server está reservado para uso interno.

Después sp_add_job de ejecutarse para agregar un trabajo, sp_add_jobstep se puede usar para agregar pasos que realicen las actividades del trabajo. sp_add_jobschedulese puede usar para crear la programación que usa el servicio Agente SQL Server para ejecutar el trabajo.

Use sp_add_jobserver para establecer la instancia de SQL Server donde se ejecuta el trabajo y sp_delete_jobserver para quitar el trabajo de la instancia de SQL Server. Si el trabajo se ejecuta en uno o varios servidores de destino en un entorno multiservidor, use sp_apply_job_to_targets para establecer los servidores de destino o los grupos de servidores de destino para el trabajo. Para quitar trabajos de servidores de destino o grupos de servidores de destino, use sp_remove_job_from_targets. La característica Administración multiservidor (MSX/TSX) no se admite en Azure SQL Instancia administrada.

SQL Server Management Studio ofrece un método gráfico sencillo para administrar trabajos y es el método recomendado para crear y administrar la infraestructura de trabajo.

Este procedimiento almacenado comparte el nombre de sp_add_job con un objeto similar para el servicio Trabajos elásticos de Azure para Azure SQL Database. Para obtener información sobre la versión de trabajos elásticos, consulte jobs.sp_add_job (Trabajos elásticos de Azure).

Permisos

Este procedimiento almacenado es propiedad del rol db_owner . Puede conceder EXECUTE permisos para cualquier usuario, pero estos permisos se pueden invalidar durante una actualización de SQL Server.

A otros usuarios se les debe conceder uno de los siguientes Agente SQL Server roles fijos de base de datos en la msdb base de datos:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Para detalles sobre los permisos de estos roles, consulte Roles fijos de base de datos del Agente SQL Server.

Solo los miembros del rol fijo de servidor sysadmin pueden establecer o cambiar el valor de @owner_login_name. Si los usuarios que no son miembros del rol sysadmin establecen o cambian el valor de @owner_login_name, se produce un error en la ejecución de este procedimiento almacenado y se devuelve un error.

Ejemplos

A Agregar un trabajo

En este ejemplo se agrega un nuevo trabajo denominado NightlyBackups.

USE msdb;
GO

EXEC dbo.sp_add_job @job_name = N'NightlyBackups';
GO

B. Adición de un trabajo con buscapersonas, correo electrónico e información de envío neto

En este ejemplo se crea un trabajo denominado Ad hoc Sales Data Backup que notifica a François Ajenstat (por medio de un mensaje emergente de red, buscapersonas o correo electrónico) si se produce algún error, y se elimina el trabajo si éste se realiza correctamente.

Nota:

En este ejemplo se da por supuesto que ya existen un operador denominado François Ajenstat y un inicio de sesión denominado françoisa.

USE msdb;
GO

EXEC dbo.sp_add_job
    @job_name = N'Ad hoc Sales Data Backup',
    @enabled = 1,
    @description = N'Ad hoc backup of sales data',
    @owner_login_name = N'françoisa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_level_netsend = 2,
    @notify_level_page = 2,
    @notify_email_operator_name = N'François Ajenstat',
    @notify_netsend_operator_name = N'François Ajenstat',
    @notify_page_operator_name = N'François Ajenstat',
    @delete_level = 1;
GO