Created
March 22, 2017 21:23
-
-
Save Tgo1014/becbd1f8cf7fa20655e569d5ce1b7ce2 to your computer and use it in GitHub Desktop.
Auto reagendamento de job para o primeiro dia útil do mês seguinte após carregar tabela
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DECLARE @DIA_UTIL INT | |
DECLARE @PROXIMO_DIA_UTIL VARCHAR(8) | |
DECLARE @PRIMEIRO_DIA_UTIL_MES_SEGUINTE VARCHAR(8) | |
/*****************************************************************************************************************/ | |
--VERIFICA DIAS ÚTEIS | |
/*****************************************************************************************************************/ | |
--TABELA DIAS UTEIS | |
IF OBJECT_ID('TEMPDB..#DIA_UTEIS_MES_ATUAL') IS NOT NULL | |
DROP TABLE #DIA_UTEIS_MES_ATUAL | |
SELECT | |
ID = ROW_NUMBER() OVER ( PARTITION BY CONVERT(VARCHAR(6),DATA,112) ORDER BY CONVERT(VARCHAR(6),DATA,112) ) | |
,DATA | |
INTO | |
#DIA_UTEIS_MES_ATUAL | |
FROM | |
DB_PGC_PRODUCAO..TB_ESTRUTURA_CALENDARIO | |
WHERE | |
CONVERT(VARCHAR(6),DATA,112) = CONVERT(VARCHAR(6),GETDATE(),112) | |
AND DIA_UTIL = 1 | |
--DIA UTIL DIA PROCESSAMENTO | |
SELECT @DIA_UTIL = ID FROM #DIA_UTEIS_MES_ATUAL WHERE DATA = CONVERT(VARCHAR(10),GETDATE(),112) | |
--PROXIMO DIA ÚTIL | |
SELECT @PROXIMO_DIA_UTIL = CONVERT(VARCHAR(8),DATA,112) FROM #DIA_UTEIS_MES_ATUAL WHERE ID = @DIA_UTIL + 1 --PRÓXIMO DIA ÚTIL | |
--PRIMEIRO DIA ÚTIL DO MÊS SEGUINTE | |
SELECT TOP 1 | |
@PRIMEIRO_DIA_UTIL_MES_SEGUINTE = CONVERT(VARCHAR(8),DATA,112) | |
FROM | |
DB_PGC_PRODUCAO..TB_ESTRUTURA_CALENDARIO | |
WHERE DIA_UTIL = 1 | |
AND CONVERT(VARCHAR(6),DATA,112) = CONVERT(VARCHAR(6),DATEADD(M,1,GETDATE()),112) | |
ORDER BY 1 | |
/*****************************************************************************************************************/ | |
--VERIFICA QUAL O DIA ÚTIL DO DIA DO PROCESSAMENTO | |
/*****************************************************************************************************************/ | |
--O ARQUIVO PODE SER DISPONIBILIZADO ATÉ O 5ºDIA ÚTIL, NESTE CASO O PROCESSO VERIFICAR O DIA ÚTIL, CASO AINDA NÃO | |
--SEJA O 5º, AGENDA PARA O PRÓXIMO DIA ÚTIL, CASO SEJA E O ARQUIVO AINDA NÃO TENHA SIDO CARREGADO, EXIBE UM ERRO | |
--CASO ARQUIVO NÃO TENHA SIDO CARREGADO | |
IF ( | |
SELECT TOP 1 CD_DIRETOR_DEPART | |
FROM DB_PGC_PRODUCAO..TB_MERCADO_ALVO_CORP_EMP | |
WHERE DT_ANOMES_REF = CONVERT(VARCHAR(6),DATEADD(M,-1,GETDATE()),112) AND DS_SEGMENTO_1 = 'EMPRESAS') IS NULL | |
OR | |
( | |
SELECT TOP 1 CD_DIRETOR_DEPART | |
FROM DB_PGC_PRODUCAO..TB_MERCADO_ALVO_CORP_EMP | |
WHERE DT_ANOMES_REF = CONVERT(VARCHAR(6),DATEADD(M,-1,GETDATE()),112) AND DS_SEGMENTO_1 = 'CORPORATE') IS NULL | |
BEGIN | |
--VERIFICA DATA LIMITE DO 5º DIA ÚTIL | |
IF (@DIA_UTIL >= 5) | |
BEGIN | |
--CASO O ARQUIVO NÃO TENHA CHEGO ATÉ O 5º DIA ÚTIL, AGENDA PARA O PROXIMO MES E EXIBE UM ERRO PARA QUE POSSA SER | |
--VERIFICADO | |
EXEC MSDB.DBO.SP_UPDATE_JOBSCHEDULE | |
@JOB_NAME = 'TB_MERCADO_ALVO_CORP_EMP' | |
,@NAME = 'MENSAL' --NOME DO JOB | |
,@ENABLED = 1 --HABILITA JOB | |
,@FREQ_TYPE = 1 --EXECUTAR APENAS 1 VEZ | |
,@ACTIVE_START_DATE = @PRIMEIRO_DIA_UTIL_MES_SEGUINTE --DIA QUE SERÁ EXECUTADO | |
,@ACTIVE_START_TIME = '070000' --07:00 | |
RAISERROR ('ARQUIVO DE EMPRESAS E/OU CORPORATE NÃO CARREGADO! DATA LIMITE DO 5º DIA ÚTIL!',16,-1); | |
END | |
ELSE | |
BEGIN | |
--AGENDA JOB PARA O PRÓXIMO DIA ÚTIL | |
EXEC MSDB.DBO.SP_UPDATE_JOBSCHEDULE | |
@JOB_NAME = 'TB_MERCADO_ALVO_CORP_EMP' | |
,@NAME = 'MENSAL' --NOME DO JOB | |
,@ENABLED = 1 --HABILITA JOB | |
,@FREQ_TYPE = 1 --EXECUTAR APENAS 1 VEZ | |
,@ACTIVE_START_DATE = @PROXIMO_DIA_UTIL --DIA QUE SERÁ EXECUTADO | |
,@ACTIVE_START_TIME = '070000' --07:00 | |
END | |
END | |
--CASO EXECUTE COM SUCESSO, AGENDA PARA O MÊS SEGUINTE | |
EXEC MSDB.DBO.SP_UPDATE_JOBSCHEDULE | |
@JOB_NAME = 'TB_MERCADO_ALVO_CORP_EMP' | |
,@NAME = 'MENSAL' --NOME DO JOB | |
,@ENABLED = 1 --HABILITA JOB | |
,@FREQ_TYPE = 1 --EXECUTAR APENAS 1 VEZ | |
,@ACTIVE_START_DATE = @PRIMEIRO_DIA_UTIL_MES_SEGUINTE --DIA QUE SERÁ EXECUTADO | |
,@ACTIVE_START_TIME = '070000' --07:00 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment