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 0
es , 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 0
y 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 1
y 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 = Domingo2 = Lunes4 = Martes8 = miércoles16 = Jueves32 = Viernes64 = Sábado |
16 (mensual) |
En el @freq_interval día del mes. |
32 (relativa mensual) |
@freq_interval es uno de los siguientes:1 = Domingo2 = Lunes3 = Martes4 = miércoles5 = Jueves6 = Viernes7 = Sábado8 = Día9 = Día de la semana10 = 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 0
y 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 0
y 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
, 16
o 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 NULL
es , 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 99991231
diciembre 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
Contenido relacionado
- Crear y adjuntar programaciones a trabajos
- Programar un trabajo
- Create a Schedule
- Agente SQL Server procedimientos almacenados (Transact-SQL)
- sp_add_jobschedule (Transact-SQL)
- sp_update_schedule (Transact-SQL)
- sp_delete_schedule (Transact-SQL)
- sp_help_schedule (Transact-SQL)
- sp_attach_schedule (Transact-SQL)