Cómo crear y usar SQL Server Agent Jobs: paso a paso
Automatizar tareas recurrentes en SQL Server ahorra tiempo y reduce errores manuales. Esta guía muestra cómo crear y configurar un SQL Server Agent Job para ejecutar comandos T-SQL programados, útil para backups, mantenimiento o ETL sencillo.
Requisitos previos
- Instancia de SQL Server con SQL Server Agent instalado y en ejecución
- Permisos: ser miembro de SQLAgentUserRole en MSDB o sysadmin
- SQL Server Management Studio (SSMS) o acceso vía T-SQL
Paso 1: Entender qué es un SQL Server Agent Job
Un SQL Server Agent Job se compone de pasos, cada paso ejecuta un tipo de tarea (T-SQL, PowerShell, CmdExec). También incluye horarios, notificaciones y propiedades de seguridad. Saber esto evita crear jobs incompletos o sin gestión de errores.
Paso 2: Crear un Job simple vía SSMS
Usar SSMS es la forma visual más directa: se crea el job, se añaden pasos y se define la programación.
-- Exemplo T-SQL equivalente para criar um job via script (ver passo 3 para detalhes)
Paso 3: Crear un Job vía T-SQL (ejemplo práctico)
Este ejemplo crea un job que ejecuta un comando T-SQL simple para insertar un registro en una tabla de auditoría. Copie y adapte a sus necesidades.
USE msdb;
GO
-- 1. Criar o job
EXEC sp_add_job
@job_name = N'InserirAuditoriaDiaria',
@enabled = 1,
@description = N'Insere um registo diário de auditoria.';
-- 2. Adicionar um passo que executa T-SQL
EXEC sp_add_jobstep
@job_name = N'InserirAuditoriaDiaria',
@step_name = N'InserirRegisto',
@subsystem = N'TSQL',
@command = N'
IF OBJECT_ID(N''dbo.Auditoria'', N''U'') IS NULL
BEGIN
CREATE TABLE dbo.Auditoria (
Id INT IDENTITY(1,1) PRIMARY KEY,
Execucao DATETIME2 DEFAULT SYSUTCDATETIME(),
Mensagem NVARCHAR(200)
);
END;
INSERT INTO dbo.Auditoria (Mensagem) VALUES (N''Job executado'');
',
@on_success_action = 1,
@on_fail_action = 2;
-- 3. Criar um schedule diário às 02:30
EXEC sp_add_jobschedule
@job_name = N'InserirAuditoriaDiaria',
@name = N'ScheduleDiario0230',
@freq_type = 4, -- diário
@freq_interval = 1,
@active_start_time = 23000; -- 02:30:00 -> 02:30 = 023000
-- 4. Associar o job ao servidor local
EXEC sp_add_jobserver
@job_name = N'InserirAuditoriaDiaria',
@server_name = N'(LOCAL)';
GO
Paso 4: Configurar notificaciones y manejadores de error
Es importante saber cuándo falla un job. Puede configurar operadores y notificaciones por e-mail (Database Mail) o registrar fallos en tablas de log.
-- Exemplo: registar falhas adicionando um passo on_fail_action ou usando sp_add_notification
-- Configurar o Database Mail e um operador via SSMS é recomendado para alertas por e-mail.
-- Aqui um método simples: criar um passo final para gravar falhas numa tabela de logs (como fallback).
Paso 5: Probar y programar ejecución manual
Antes de confiar en la programación, ejecute el job manualmente y verifique el comportamiento y permisos. Puede ejecutar vía SSMS o T-SQL:
-- Executar job manualmente
USE msdb;
EXEC sp_start_job @job_name = N'InserirAuditoriaDiaria';
Verificar el resultado
Para confirmar que el job se ejecutó: verifique el historial del job en SSMS (Job Activity Monitor → View History) y consulte la tabla dbo.Auditoria en la base de datos destino.
-- Verificar entradas
SELECT TOP 10 * FROM dbo.Auditoria ORDER BY Execucao DESC;
-- Verificar historial del job
USE msdb;
SELECT sj.name, sh.run_date, sh.run_time, sh.message, sh.run_status
FROM dbo.sysjobhistory sh
JOIN dbo.sysjobs sj ON sh.job_id = sj.job_id
WHERE sj.name = N'InserirAuditoriaDiaria'
ORDER BY sh.instance_id DESC;
Conclusión
Automatizar con SQL Server Agent mejora la fiabilidad y consistencia de tareas recurrentes. Próximos pasos: añadir pasos PowerShell para ETL, configurar notificaciones con Database Mail y gestionar permisos con proxies. Consejo: pruebe siempre los jobs en entorno de desarrollo antes de ponerlos en producción.