sp_add_job (Transact-SQL)

Agrega un nuevo trabajo ejecutado por el servicio SQLServerAgent.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_add_job [ @job_name = ] 'job_name'
     [ , [ @enabled = ] enabled ] 
     [ , [ @description = ] '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 =] 'job_name'
    Nombre del trabajo. El nombre debe ser único y no puede contener el carácter del porcentaje (%). job_namees de tipo nvarchar(128) y no tiene ningún valor predeterminado.

  • [ @enabled = ] enabled
    Indica el estado del trabajo agregado. enabledes de tipo tinyint y su valor predeterminado es 1 (habilitado). Si es 0, el trabajo no está habilitado y no se ejecuta de acuerdo con su programación; no obstante, se puede ejecutar manualmente.

  • [ @description = ] 'description'
    Descripción del trabajo. description es de tipo nvarchar(512) y su valor predeterminado es NULL. Si description se omite, se utiliza "No hay ninguna descripción".

  • [ @start_step_id = ] step_id
    Número de identificación del primer paso que se va a ejecutar para el trabajo. step_ides de tipo int y su valor predeterminado es 1.

  • [ @category_name = ] 'category'
    Categoría del trabajo. category es de tipo sysname y su valor predeterminado es NULL.

  • [ @category_id = ] category_id
    Mecanismo independiente del idioma para especificar una categoría de trabajo. category_ides de tipo int y su valor predeterminado es NULL.

  • [ @owner_login_name = ] 'login'
    Nombre del inicio de sesión al que pertenece el trabajo. logines de tipo sysname y su valor predeterminado es NULL, lo que se interpreta como el nombre del inicio de sesión actual. Sólo los miembros de la función fija de servidor sysadmin pueden establecer o cambiar el valor de @owner_login_name. Si los usuarios que no son miembros de la función sysadmin establecen o cambian el valor de @owner_login_name, este procedimiento almacenado no se ejecuta correctamente y se devuelve un error.

  • [ @notify_level_eventlog = ] eventlog_level
    Valor que indica cuándo se debe incluir una entrada para este trabajo en el registro de aplicación de Microsoft Windows. eventlog_leveles de tipo int y puede tener uno de estos valores.

    Valor

    Descripción

    0

    Nunca

    1

    En caso de éxito

    2 (predeterminado)

    En caso de error

    3

    Siempre

  • [ @notify_level_email = ] email_level
    Valor que indica cuándo se debe enviar un mensaje de correo electrónico para notificar la finalización del trabajo. email_leveles de tipo int y su valor predeterminado es 0, que significa que nunca. email_levelutiliza los mismos valores que eventlog_level.

  • [ @notify_level_netsend = ] netsend_level
    Valor que indica cuándo se debe enviar un mensaje de red para notificar la finalización del trabajo. netsend_leveles de tipo int y su valor predeterminado es 0, que significa que nunca. netsend_level utiliza los mismos valores que eventlog_level.

  • [ @notify_level_page = ] page_level
    Valor que indica cuándo se debe enviar una página para notificar la finalización del trabajo. page_leveles de tipo int y su valor predeterminado es 0, que significa que nunca. page_levelutiliza los mismos valores que eventlog_level.

  • [ @notify_email_operator_name = ] 'email_name'
    Nombre de correo electrónico de la persona a la que se enviará un mensaje de correo electrónico cuando se alcance el valor de email_level. email_name es de tipo sysname y su valor predeterminado es NULL.

  • [ @notify_netsend_operator_name = ] 'netsend_name'
    Nombre del operador al que se enviará el mensaje de red al finalizar este trabajo. netsend_namees de tipo sysname y su valor predeterminado es NULL.

  • [ @notify_page_operator_name = ] 'page_name'
    Nombre de la persona a la que se enviará un mensaje por localizador al finalizar este trabajo. page_namees de tipo sysname y su valor predeterminado es NULL.

  • [ @delete_level = ] delete_level
    Valor que indica cuándo se va a eliminar el trabajo. delete_valuees de tipo int y su valor predeterminado es 0, lo que significa nunca. delete_levelutiliza los mismos valores que eventlog_level.

    Nota

    Cuando delete_level es 3, el trabajo se ejecuta una sola vez, con independencia de las programaciones que se hayan definido para el mismo. Además, si un trabajo se elimina a sí mismo, también se elimina todo el historial del trabajo.

  • [ @job_id = ] job_idOUTPUT
    Número de identificación de trabajo que se asigna al trabajo si éste se ha creado correctamente. job_ides una variable de salida de tipo uniqueidentifier y su valor predeterminado es NULL.

Valores de código de retorno

0 (correcto) o 1 (error)

Conjuntos de resultados

Ninguno

Comentarios

@originating_server existe en sp_add_job, pero no aparece en Argumentos. @originating_server se reserva para uso interno.

Después de haber ejecutado sp_add_job para agregar un trabajo, se puede usar sp_add_jobstep para agregar los pasos que realizan las actividades del trabajo. sp_add_jobschedule se puede utilizar para crear la programación que el servicio del Agente SQL Server utiliza para ejecutar el trabajo. Utilice 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 va a ejecutar en uno o varios servidores de destino en un entorno multiservidor, utilice sp_apply_job_to_targets para establecer los servidores de destino o los grupos de servidores de destino del trabajo. Para quitar trabajos de los servidores de destino o grupos de servidores de destino, utilice sp_remove_job_from_targets.

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.

Permisos

Para ejecutar este procedimiento almacenado, los usuarios deben ser miembros de la función fija de servidor sysadmin, o debe concedérseles una de las siguientes funciones fijas de base de datos del Agente SQL Server, que residen en la base de datos msdb.

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

Para obtener información sobre permisos específicos asociados a cada una de estas funciones fijas de base de datos, vea Funciones fijas de base de datos del Agente SQL Server.

Sólo los miembros de la función fija de servidor sysadmin pueden establecer o cambiar el valor de @owner_login_name. Si los usuarios que no son miembros de la función sysadmin establecen o cambian el valor de @owner_login_name, este procedimiento almacenado no se ejecuta correctamente 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. Agregar un trabajo con la información de localizador, correo electrónico y net send

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, localizador 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