Instructivo: Automatización del Análisis de Labores e Insumos
1. Objetivo
Describir el proceso técnico para la creación y configuración de un Job en SQL Server que automatice la ejecución del procedimiento almacenado ANALISISLABORESINSUMOS. Este proceso asegura que las tablas de análisis se actualicen diariamente de forma desatendida.
2. Detalles del Job
-
Nombre del Job:
Job_AnalisisLaboresInsumos_Diario -
Frecuencia: Diaria.
-
Horario de ejecución: 23:00 hs (11:00 PM).
-
Acción: Ejecución del SP
ANALISISLABORESINSUMOS.
3. Requisitos Previos
-
Estado del Servicio: El servicio SQL Server Agent debe estar en ejecución (índice verde en el Object Explorer).
-
Permisos: El usuario que ejecute el script debe tener el rol
sysadmino pertenecer aSQLAgentUserRoleen la base de datosmsdb. -
Base de Datos: Identificar el nombre exacto de la base de datos donde reside el procedimiento almacenado.
4. Procedimiento de Implementación
Paso 1: Configuración del Script
Antes de ejecutar el script en el entorno, es imperativo modificar el parámetro @database_name en la línea del Paso 4 del código, reemplazando 'TuBaseDeDatos' por el nombre real de la base de datos de producción/operación.
Paso 2: Ejecución del Script SQL
Copiar y ejecutar el siguiente bloque de código en una ventana de consulta (New Query) en SQL Server Management Studio (SSMS):
SQL
USE msdb;
GO
-- A. Limpieza: Elimina el Job si ya existe para evitar duplicados o errores de conflicto
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'Job_AnalisisLaboresInsumos_Diario')
BEGIN
EXEC msdb.dbo.sp_delete_job @job_name = N'Job_AnalisisLaboresInsumos_Diario';
END
GO
-- B. Creación del Contenedor del Job
DECLARE @jobId BINARY(16);
EXEC msdb.dbo.sp_add_job
@job_name = N'Job_AnalisisLaboresInsumos_Diario',
@enabled = 1,
@description = N'Ejecuta el SP ANALISISLABORESINSUMOS diariamente a las 11 PM.',
@job_id = @jobId OUTPUT;
-- C. Configuración del Paso (Step) de ejecución
-- IMPORTANTE: Cambiar 'TuBaseDeDatos' por el nombre real de la BD
EXEC msdb.dbo.sp_add_jobstep
@job_id = @jobId,
@step_name = N'Ejecutar SP ANALISISLABORESINSUMOS',
@step_id = 1,
@cmdexec_success_code = 0,
@on_success_action = 1, -- Salir reportando éxito
@on_fail_action = 2, -- Salir reportando error
@database_name = N'TuBaseDeDatos',
@command = N'EXEC ANALISISLABORESINSUMOS',
@retry_attempts = 0,
@retry_interval = 0;
-- D. Programación del Horario (Schedule)
EXEC msdb.dbo.sp_add_jobschedule
@job_id = @jobId,
@name = N'HorarioDiario_23hs',
@enabled = 1,
@freq_type = 4, -- Tipo: Diario
@freq_interval = 1, -- Repetir: Cada 1 día
@active_start_time = 230000; -- Formato HHMMSS (23:00:00)
-- E. Asignación al Servidor Local
EXEC msdb.dbo.sp_add_jobserver
@job_id = @jobId,
@server_name = N'(local)';
GO
5. Verificación y Monitoreo
Verificación Inicial
Para confirmar que el Job se ha creado correctamente, ejecute la siguiente consulta:
SQL
SELECT name, enabled, start_step_id, date_created
FROM msdb.dbo.sysjobs
WHERE name = 'Job_AnalisisLaboresInsumos_Diario';
Ejecución de Prueba
Se recomienda realizar una ejecución manual inicial para validar que los permisos y la lógica del SP funcionen dentro del contexto del Job:
-
En el Object Explorer, expanda SQL Server Agent > Jobs.
-
Click derecho en
Job_AnalisisLaboresInsumos_Diario. -
Seleccione Start Job at Step….
Monitoreo de Errores
En caso de falla, revisar el historial:
- Click derecho sobre el Job > View History.
6. Resolución de Problemas Frecuentes
-
Error “Could not find stored procedure”: Asegúrese de haber escrito correctamente el nombre de la base de datos en el parámetro
@database_name. -
El Job no corre a la hora programada: Verifique que el servicio SQL Server Agent esté encendido.
-
Error de permisos (Truncate table): El usuario que ejecuta el Agent debe tener permisos suficientes sobre las tablas de destino.
Nota: Solo apilica para clientes con Windows Server ![]()