none
Fuso horário com dois servidores RRS feed

  • Pergunta

  • Boa tarde, fiz uma busca no fórum mas não consegui uma solução para o meu problema. Gostaria de uma ajuda com ideias que poderiam solucionar o seguinte cenário:

    Banco de dados Azure - Utiliza horário universal (greenwich).

    Aplicações Azure (Alguns sites e WebService) - Utiliza horário universal (greenwich).

    Sites (Servidor dedicado) - Utilizam fuso horário do brasil (Brasília), que pode ser -3 ou -2 (horário de verão)

    Área administrativa (Servidor dedicado) - Utilizam fuso horário do brasil (Brasília), que pode ser -3 ou -2 (horário de verão) 

    Informações adicionais:

    Anteriormente todas as aplicações e sites eram nesse servidor dedicado, então possuo muitos dados salvos com o fuso horário de Brasília.

    Durante a migração a equipe não se atentou a esse detalhe dos horários diferenciados, então também já possuímos muitos dados no horário internacional também. E estão começando a surgir problemas.

    Problemas:

    Com esse cenário acima estou tendo basicamente 2 problemas.

    O primeiro é quando recebo uma data através do webservice em um site que está na minha hospedagem dedicada:

    Informação do Banco (Azure) –11/12/2013 00:00:00

    Informação que aparece no Site (Dedicado) – 10/12/2013 22:00:00

    O segundo é quando eu utilizo getdate() na base de dados (é utilizado em diversos lugares), que me retorna sempre 2 horas a mais.

    Era para retornar 11/12/2013 10:11:50 e ele me retorna 11/12/2013 12:11:50.

    Perguntas:

    É possível modificar o horário dos servidores Azure?

    Se não é, alguém tem uma ideia para me ajudar nessa situação.

    Obrigado.

    quarta-feira, 11 de dezembro de 2013 14:17

Respostas

  • Como você não achou nada parecido? O tópico mais recente falava exatamente disso:

    http://social.msdn.microsoft.com/Forums/en-US/23db486f-c9e7-4e35-bc73-d0c26623d078/alterao-de-fuso-horario-e-data?forum=sqlazurept

    De qualquer maneira, você não tem como alterar a data do banco de dados.

    Se você trabalha com Cloud, você tem que esquecer que o servidor tem estado (neste caso, a Data).

    Do mesmo jeito que você tá acessando um servidor nos EUA hoje, você pode acessar um na Europa amanhã e seu sistema não pode ficar dependendo da hora do servidor.

    O jeito mais comum de resolver isso é trabalhar sempre com a data em UTC (DateTime.UtcNow no c# / getutcdate() no sql server) e só converter a data quando for apresentar para o seu cliente (em um website ou um app, por exemplo).

    • Marcado como Resposta Giovani Cr terça-feira, 17 de dezembro de 2013 17:13
    quarta-feira, 11 de dezembro de 2013 17:22