Olá pessoal,

Este artigo é complemento ao artigo escrito por Walter Carlin - Sr. PFE - Dynamics 365 (Remover Horário de Verão no Brasil em 2019 [Remove Daylight Saving Time in Brazil in 2019]).

Como descrito no artigo anterior, através do Decreto Presidencial número 9772 de 25/04/2019 o Horário de Verão no Brasil em 2019 foi encerrado (http://www.planalto.gov.br/ccivil_03/_ato2019-2022/2019/decreto/D9772.htm). Desta forma, se faz necessário atualizar as configurações dos bancos de dados das organizações Dynamics CRM/365 para ignorar o horário de verão previamente estabelecido. Este artigo é um complemento porque temos  um script para ajustar o horário de verão em 2020, afim que inicie o horário padrão logo no primeiro dia do ano.

Elaborei este script para ser executado nos ambientes On Premises a partir da versão 2011. O script gerará uma cópia da tabela TimezoneRuleBase, caso haja alguma mudança no horário de verão futuramente. 

Na primeira linha ajustar o nome do banco de dados da Organização a atualizar.

IMPORTANTE: (1) Este script trata somente da atualização do banco de dados do Dynamics (server) e não inibe a necessidade de updates do Windows (server / client).

IMPORTANTE: (2) Para os ambientes Online a Microsoft aplicará o ajuste em todas as organizações automaticamente. 

USE [nome_da_organizacao_MSCRM] -- alterar para o banco de dados da organização
GO

BEGIN TRY
BEGIN TRANSACTION
IF (NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'TimezoneRuleBase_Backup'))
BEGIN
SELECT * INTO TimezoneRuleBase_Backup FROM TimezoneRuleBase
END

UPDATE TimeZoneRuleBase
SET
StandardBias = 0,
StandardYear = 0,
StandardMonth = 1,
StandardDay = 1,
StandardDayOfWeek = 3,
StandardHour = 00,
StandardMinute = 00,
StandardSecond = 00 ,
DaylightBias = -60,
DaylightYear = 0,
DaylightMonth = 0,
DaylightDay = 0,
DaylightDayOfWeek = 0,
DaylightHour = 0,
DaylightMinute = 0,
DaylightSecond = 0
WHERE TimeZoneDefinitionId in (SELECT TimeZoneDefinitionId FROM TimeZoneDefinitionBase WHERE TimeZoneCode IN (65, 58))
AND EffectiveDateTime = '2020-01-01'

COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
THROW
END CATCH

Após executar o script, efetuar IISRESET nos servidores de front-end e restart para Serviço de Processamento Assíncrono nos servidores de back-end. Caso o problema for persistente, aplique restart para cada servidor do deployment.

Gustavo Longo - Technical Advisory - Dynamics 365 - Microsoft