Compartir vía


sp_add_schedule (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Crea una programación que puede ser utilizada por un número indeterminado de trabajos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_add_schedule
    [ @schedule_name = ] 'schedule_name'
    [ , [ @enabled = ] enabled ]
    [ , [ @freq_type = ] freq_type ]
    [ , [ @freq_interval = ] freq_interval ]
    [ , [ @freq_subday_type = ] freq_subday_type ]
    [ , [ @freq_subday_interval = ] freq_subday_interval ]
    [ , [ @freq_relative_interval = ] freq_relative_interval ]
    [ , [ @freq_recurrence_factor = ] freq_recurrence_factor ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @active_start_time = ] active_start_time ]
    [ , [ @active_end_time = ] active_end_time ]
    [ , [ @owner_login_name = ] 'owner_login_name' ]
    [ , [ @schedule_uid = ] schedule_uid OUTPUT ]
    [ , [ @schedule_id = ] schedule_id OUTPUT ]
    [ , [ @originating_server = ] server_name ] /* internal */
[ ; ]

Argumentos

[ @schedule_name = ] 'schedule_name'

Nombre de la programación. @schedule_name es sysname, sin ningún valor predeterminado.

[ @enabled = ] enabled

Indica el estado actual de la programación. @enabled es tinyint, con un valor predeterminado de 1 (habilitado). Si 0es , la programación no está habilitada. Cuando la programación no está habilitada, no se ejecuta ningún trabajo en esta programación.

[ @freq_type = ] freq_type

Valor que indica cuándo se va a ejecutar un trabajo. @freq_type es int, con un valor predeterminado de 0y puede ser uno de estos valores.

Valor Descripción
1 Una vez
4 Diario
8 Semanal
16 Mensual
32 Mensual, en relación con @freq_interval
64 Ejecución cuando se inicia Agente SQL Server servicio
128 Se ejecuta cuando el equipo está inactivo (no se admite en Azure SQL Instancia administrada)

[ @freq_interval = ] @freq_interval

Días en que se ejecuta un trabajo. @freq_interval es int, con un valor predeterminado de 1y depende del valor de @freq_type.

Valor de @freq_type Efecto en @freq_interval
1 (una vez) @freq_interval no se usa.
4 (diario) Cada @freq_interval días.
8 (semanal) @freq_interval es uno o varios de los siguientes (combinados con un OR operador lógico):

1 = Domingo
2 = Lunes
4 = Martes
8 = miércoles
16 = Jueves
32 = Viernes
64 = Sábado
16 (mensual) En el @freq_interval día del mes.
32 (relativa mensual) @freq_interval es uno de los siguientes:

1 = Domingo
2 = Lunes
3 = Martes
4 = miércoles
5 = Jueves
6 = Viernes
7 = Sábado
8 = Día
9 = Día de la semana
10 = Día del fin de semana
64 (cuando se inicia el servicio SQLServerAgent) @freq_interval no se usa.
128 @freq_interval no se usa.

[ @freq_subday_type = ] freq_subday_type

Especifica las unidades de @freq_subday_interval. @freq_subday_type es int, con un valor predeterminado de 0y puede ser uno de estos valores.

Valor Descripción (unidad)
0x1 A la hora especificada
0x2 Segundos
0x4 Minutos
0x8 horas

[ @freq_subday_interval = ] freq_subday_interval

Número de períodos de @freq_subday_type que se van a producir entre cada ejecución de un trabajo. @freq_subday_interval es int, con un valor predeterminado de 0. El intervalo debe tener al menos 10 segundos de duración. @freq_subday_interval se omite en aquellos casos en los que @freq_subday_type es igual a 1.

[ @freq_relative_interval = ] freq_relative_interval

La aparición de @freq_interval de un trabajo en cada mes, si @freq_interval es 32 (relativa mensual). @freq_relative_interval es int, con un valor predeterminado de 0y puede ser uno de estos valores. @freq_relative_interval se omite en aquellos casos en los que @freq_type no es igual a 32.

Valor Descripción (unidad)
1 Primero
2 Segundo
4 Tercero
8 Cuarta
16 Último

[ @freq_recurrence_factor = ] freq_recurrence_factor

Número de semanas o meses entre las ejecuciones programadas de un trabajo. @freq_recurrence_factor solo se usa si @freq_type es 8, 16o 32. @freq_recurrence_factor es int, con un valor predeterminado de 0.

[ @active_start_date = ] active_start_date

Fecha en la que se puede iniciar la ejecución de un trabajo. @active_start_date es int, con un valor predeterminado de NULL, que indica la fecha actual. La fecha tiene el formato yyyyMMdd. Si @active_start_date no NULLes , la fecha debe ser mayor o igual que 19900101.

Una vez creada la programación, revise la fecha de inicio y confirme que es la fecha correcta. Para obtener más información, vea la sección "Programar fecha de inicio" en Crear y adjuntar programaciones a trabajos.

En el caso de las programaciones semanales o mensuales, el Agente omite si @active_start_date está en el pasado y, en su lugar, usa la fecha actual. Cuando se crea una programación de Agente SQL Server con sp_add_schedule hay una opción para especificar el parámetro @active_start_date que es la fecha en que comienza la ejecución del trabajo. Si el tipo de programación es semanal o mensual y el parámetro @active_start_date se establece en una fecha en el pasado, se omite el parámetro @active_start_date y la fecha actual se usa para @active_start_date.

[ @active_end_date = ] active_end_date

Fecha en la que puede detenerse la ejecución de un trabajo. @active_end_date es int, con un valor predeterminado de , que indica el 31 de 99991231diciembre de 9999. Formateado como yyyyMMdd.

[ @active_start_time = ] active_start_time

Hora en cualquier día entre @active_start_date y @active_end_date para iniciar la ejecución de un trabajo. @active_start_time es int, con un valor predeterminado de 000000, que indica 12:00:00 A.M. en un reloj de 24 horas, y debe escribirse con el formulario HHmmss.

[ @active_end_time = ] active_end_time

Hora en cualquier día entre @active_start_date y @active_end_date para finalizar la ejecución de un trabajo. @active_end_time es int, con un valor predeterminado de 235959, que indica las 11:59:59 p.m. en un reloj de 24 horas y debe escribirse con el formulario HHmmss.

[ @owner_login_name = ] 'owner_login_name'

Nombre de la entidad de seguridad del servidor a la que pertenece la programación. @owner_login_name es sysname, con un valor predeterminado de NULL, que indica que la programación es propiedad del creador.

[ @schedule_uid = ] schedule_uid OUTPUT

Es un identificador único para la programación. @schedule_uid es una variable de tipo uniqueidentifier.

[ @schedule_id = ] schedule_id OUTPUT

Identificador de la programación. @schedule_id es una variable de tipo int.

[ @originating_server = ] server_name

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

Valores de código de retorno

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

Conjunto de resultados

Ninguno.

Comentarios

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

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.

Ejemplos

A Crear una programación

En el siguiente ejemplo se crea una programación llamada RunOnce. La programación se ejecuta una vez a las 23:30 el día en que se ha creado la programación.

USE msdb;
GO

EXEC dbo.sp_add_schedule
    @schedule_name = N'RunOnce',
    @freq_type = 1,
    @active_start_time = 233000;
GO

B. Crear una programación, adjuntar la programación a varios trabajos

En el siguiente ejemplo se crea una programación llamada NightlyJobs. Los trabajos que usan esta programación se ejecutan a diario cuando la hora del servidor es 01:00. En el ejemplo se asocia la programación a los trabajos BackupDatabase y RunReports.

Nota:

En este ejemplo se da por supuesto que el trabajo BackupDatabase y el trabajo RunReports ya existen.

USE msdb;
GO

EXEC sp_add_schedule
    @schedule_name = N'NightlyJobs',
    @freq_type = 4,
    @freq_interval = 1,
    @active_start_time = 010000;
GO

EXEC sp_attach_schedule
    @job_name = N'BackupDatabase',
    @schedule_name = N'NightlyJobs';
GO

EXEC sp_attach_schedule
    @job_name = N'RunReports',
    @schedule_name = N'NightlyJobs';
GO