sql >> Base de Datos >  >> RDS >> Sqlserver

Cree un trabajo del Agente SQL Server usando T-SQL

El Agente SQL Server es un servicio de Microsoft Windows que ejecuta tareas administrativas programadas, que se denominan trabajos. en SQL Server.

T-SQL incluye una gran colección de procedimientos almacenados que se ocupan de los trabajos del Agente SQL Server.

Aquí, usaremos algunos de ellos para crear y programar un trabajo del Agente SQL Server.

También puede crear trabajos del Agente SQL Server a través de la GUI (en SSMS) si lo prefiere.

Habilitar XP de agente

Si es la primera vez que crea un trabajo del Agente SQL Server en su instancia de SQL Server, probablemente necesite habilitar los procedimientos almacenados extendidos (Agent XP) del Agente SQL Server.

A continuación se explica cómo hacerlo con T-SQL y cómo hacerlo con la GUI de SSMS.

Una vez que haya hecho eso, puede continuar y crear un trabajo del Agente SQL Server como el que se muestra a continuación.

Ejemplo

Este es un ejemplo del código utilizado para crear y programar un trabajo del Agente SQL Server.

USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'BackupPetHotelDB' ;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupPetHotelDB',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [PetHotel] TO DISK = N''C:\Backups\PetHotel.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;  
GO
EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO  
EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupPetHotelDB';  
GO

Aquí, usamos cinco procedimientos almacenados para crear y programar el trabajo. La mayoría de estos procedimientos aceptan muchos más argumentos (opcionales) que los que he usado en este ejemplo. Para obtener una lista completa de los argumentos disponibles para cada procedimiento, consulte los enlaces en la siguiente tabla.

Estos procedimientos almacenados están en msdb base de datos, y puede ver que configuramos msdb como la base de datos actual antes de ejecutarlos. Alternativamente, podría calificarlos con el nombre de la base de datos (por ejemplo, msdb.dbo.sp_add_job... , etc.)

La siguiente tabla proporciona una descripción general rápida de cada procedimiento.

Procedimiento almacenado Descripción
sp_add_job Agrega un nuevo trabajo ejecutado por el servicio del Agente SQL.

Consulte el sitio web de Microsoft para obtener más información.
sp_add_jobstep Agrega un paso que realiza la operación real para el trabajo que se agregó con sp_add_job .

En el ejemplo anterior, agregamos un paso para hacer una copia de seguridad de una base de datos. Lo especificamos proporcionando un comando T-SQL.

El @retry_interval es en minutos.

Consulte el sitio web de Microsoft para obtener más información.
sp_add_schedule Crea una programación que puede ser utilizada por cualquier cantidad de trabajos.

En este caso, le dimos @freq_type un valor de 4 que es diario. También dimos @freq_interval un valor de 4 , que también es diario.

La hora se basa en un reloj de 24 horas y se ingresa en el formulario HHMMSS. Nuestro ejemplo usa 041000 , que es 04:10:00.

Consulte el enlace de Microsoft a continuación para conocer las diversas opciones disponibles al configurar la frecuencia.

Consulte el sitio web de Microsoft para obtener más información.
sp_attach_schedule Establece un horario para un trabajo. Aquí, adjuntamos el horario que agregamos con sp_add_schedule al trabajo que agregamos con sp_add_job .

Tenga en cuenta que la programación y el trabajo deben tener el mismo propietario.

Además, se puede establecer una programación para más de un trabajo y se puede ejecutar un trabajo en más de una programación.

Consulte el sitio web de Microsoft para obtener más información.
sp_add_jobserver Tiene como destino el trabajo especificado en el servidor especificado. Esto también acepta un @server_name argumento para especificar el servidor.

El valor predeterminado es (LOCAL) para la máquina local. En nuestro ejemplo, usamos la máquina local y pudimos omitir este argumento.

Consulte el sitio web de Microsoft para obtener más información.

Ver el trabajo

Puede usar el sp_help_job procedimiento almacenado en msdb base de datos para ver los trabajos del Agente SQL Server que se han creado en el servidor.

EXEC sp_help_job;

Esto es lo que parece en mi máquina de prueba:

En este caso hay tres trabajos.

También puede ver los trabajos en el Explorador de objetos cuando tiene Agente SQL Server> Trabajos. nodo expandido.

El sp_help_job El procedimiento almacenado le permite proporcionar el nombre o ID de un trabajo para obtener información más detallada sobre ese trabajo.

Ejemplo:

EXEC sp_help_job @job_name= 'BackupPetHotelDB';

Resultado:

Los resultados se separan en los detalles principales del trabajo, los pasos del trabajo, las programaciones del trabajo y los servidores de destino del trabajo. Esto refleja bastante los procedimientos almacenados que ejecutamos cuando creamos el trabajo.

Consulte la documentación de Microsoft para sp_help_job para obtener más información, así como una lista de otros argumentos que puede proporcionar.

Probar el trabajo

Puede usar el sp_start_job procedimiento almacenado para probar que su trabajo se ejecutará. Este procedimiento acepta el nombre o ID del trabajo y ejecutará el trabajo tan pronto como ejecute el procedimiento.

Consulte Cómo ejecutar un trabajo del Agente SQL Server mediante T-SQL para ver un ejemplo.