none
SQL Agent - ejecutar hora aleatoria RRS feed

  • Pregunta

  • Buenas noches, tengo una consulta sobre el sql Agent, hasta ahora he aprendido que se puede programar tareas que se ejecutará en horas, intervalos ya establecidas, pero tengo la duda de como hacer que se ejecute algo más aleatorio, es decir que hoy día se ejecute a las 12 horas, mañana a las 15:20 horas, al día que sigue a las 13:45, etc.

    se puede realizar?


    Giancarlo

    domingo, 19 de agosto de 2018 4:11

Respuestas

Todas las respuestas

  • Hola gian2051:

    De un modo directo, no veo la posibilidad, pero de un modo indirecto si.

    Siempre puedes crear una tarea que tenga un trabajo periódico, por ejemplo diario a las 12:00.

    El
    contenido de este job serán las sentencias transact suficientes para
    que creen una nueva tarea o una nueva programación de otra tarea, con
    una ejecución aleatoria.

    sp_add_job

    sp_add_jobstep

    sp_add_jobschedule (en este iría tú código de generar un horario aleatorio)

    sp_add_jobserver

    sp_attach_schedule

    Espero te ayude.

    Un saludo

    domingo, 19 de agosto de 2018 6:05
  • Hola gian2051

    Lo realice de la siguiente manera, espero te ayude.

    --Cambia tus id de JOB's
    --Crear Funcion
    
    USE [msdb]
    GO
    CREATE FUNCTION [dbo].[F_RellenaCeros] (@variable int, @longitud int)
    RETURNS VARCHAR(10) AS
    BEGIN
    DECLARE @RESULTADO VARCHAR(10)
    SET @RESULTADO=CAST(@VARIABLE AS VARCHAR)+REPLICATE('0',@LONGITUD - LEN(@VARIABLE))
    return (@Resultado)
    END
    GO
    ------------------------------------------------------------
    USE [msdb]
    GO
    DECLARE @tiempoRandomHora int;
    DECLARE @tiempoRandomMinutos int;
    DECLARE @HoraMunitosRandom int;
    
    SET @tiempoRandomHora=FLOOR(RAND()*(16-10)+10);
    SET @tiempoRandomMinutos =FLOOR(RAND()*(59-10)+10);
    SET @tiempoRandomHora = CONCAT (@tiempoRandomHora,@tiempoRandomMINUTOS);
    SET @HoraMunitosRandom = [dbo].[F_RellenaCeros] (@tiempoRandomHora,6)
    --SELECT @HoraMunitosRandom --entre las  10 am hasta las 3 pm 
    --Cambia tus id de JOB's
    EXEC msdb.dbo.sp_attach_schedule 
    @job_id=N'',@schedule_id=
    EXEC msdb.dbo.sp_update_schedule @schedule_id='', 
    		@active_start_time=@HoraMunitosRandom
    GO
    

    martes, 26 de enero de 2021 17:19