Como preparar o SQL Server 2005 e SQL Server 2000 para as alterações à hora de Verão de 2007

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 931975
INTRODUÇÃO
Em Agosto de 2005, o Congresso S. r. passado o Energy Policy Act. Este acto altera tanto a data de início e a data de fim da hora de Verão (DST). Quando este acto entra em vigor em 2007, hora de Verão começará três semanas anteriores e terminará uma semana posterior quando tradicionalmente iniciado e terminada. Especificamente, a hora de Verão começará às 2: 00 A.M. do segundo domingo de Março e termina às 2: 00 do primeiro domingo de Novembro.

A tabela seguinte resume as alterações à hora de Verão de 2007.
Data hora de Verão previamente iniciadaData hora de Verão é iniciado em 2007Data de quando anteriormente fim da hora de VerãoData quando termina a hora de Verão de 2007
Primeiro domingo de AbrilSegundo domingo de MarçoÚltimo Domingo de Outubro Primeiro domingo de Novembro
Deverá ter sido 1 de Abril de 200711 De Março de 2007Deverá ter sido 28 de Outubro de 20074 De Novembro de 2007
Este artigo explica como preparar o Microsoft SQL Server 2005 e o Microsoft SQL Server 2000 para as alterações à hora de Verão de 2007.
Mais Informação

Acções que tem de tomar

Se tiver o SQL Server instalado num computador que está configurado para ajustes automáticos de hora de Verão e o fuso horário do computador segue as alterações à hora de Verão de 2007, tem de tomar as seguintes acções:
  • Instale a actualização para o Windows é descrito no artigo de base de dados de conhecimento da Microsoft 924840. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    924840Está disponível uma versão de teste da actualização de fuso horário globais 2007 para Windows
  • Se tiver o SQL Server Notification Services instalado no computador, instale a actualização descrita artigo da base de dados de conhecimento 931815. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    931815actualização de fuso horário de 2007 para o SQL Server 2005 Notification Services e para o SQL Server 2000 Notification Services
  • Não é necessário aplicar todas as actualizações específicas de SQL Server para se certificar de que o SQL Server funciona correctamente. No entanto, terá de actualizar o sistema operativo. Além disso, terá de actualizar os produtos e aplicações que interagem com o SQL Server. Estes produtos e aplicações poderão incluir Notification Services, Windows SharePoint Services, Microsoft CRM e assim sucessivamente. Para obter uma lista completa de actualizações que tem de aplicar para outros produtos da Microsoft, visite o seguinte Web site da Microsoft:

Utilização de tempo do SQL Server e relatórios

No SQL Server 2005 e no SQL Server 2000, o motor de base de dados do SQL Server utiliza as seguintes duas formas de temporizador para gerar informações de hora:
  • Temporizador de alta resolução
  • Temporizador de baixa resolução
No temporizador de alta resolução, a resolução do temporizador baseia-se a instrução RDTSC (leitura-carimbo contador) da CPU. No temporizador de baixa resolução, a resolução do temporizador baseia-se a função ObterContagemMarcaEscala da API do Microsoft Windows.

Várias tarefas com o temporizador em segundo plano e componentes críticos do sistema dependem estes temporizadores para o respectivo funcionamento correcto. Uma vez que estes temporizadores funcionarem como medidas relativas a partir de uma hora específica, componentes internos e actividades internas não serão afectadas pelas alterações à hora de Verão de 2007.

Por exemplo, efectuar tarefas que envolvam seguintes actividades com o temporizador de temporizador baseadas em componentes:
  • Componentes de sistema, tais como escritor lento, bloqueio monitor e programador monitor
  • Tarefas em segundo plano, tais como limpeza fantasma e redução automática
  • Baseado em time-out os recursos como bloqueios e latches
  • Actividades agendadas, tais como tarefas do SQL Server Agent e planos de manutenção
  • Instruções de sistema tais como a instrução WAITFOR
SQL Server também gera informações de hora que são disponibilizadas para componentes externos e aplicações. Estas informações de hora são obtidas o sistema operativo Windows. Por este motivo, as informações de hora estão correctas, desde que o sistema operativo devolve o valor hora correcta.

Por exemplo, efectuar tarefas que envolvem os seguintes componentes externos e aplicações:
  • SQL Server Profiler ou SQL Profiler colunas de eventos como a coluna Hora de início , a coluna Hora de fim e a coluna duração para vários eventos
  • Informações de hora que são comunicadas nos vários registos como o SQL Server Errorlog, registos de eventos e tabelas de sistema
  • Funções de sistema, tais como a função GetDate e a função GetUtcDate
Considere o seguinte cenário. Criar um rastreio de SQL Server utilizando o SQL Server Profiler ou SQL Profiler. Os registos de rastreio uma consulta que é iniciado antes da hora de Março de 2007 relativas à hora de Verão altere e termina após a alteração de hora de Março de 2007 relativas à hora de Verão. Neste cenário, as informações de hora são precisas e não são afectadas pelas alterações relativas à hora de Verão.
Segue-se exemplo de resultado do rastreio:
EventSequence  EventClass         TextData              StartTime                EndTime                  Duration156            Sql:StmtStarting   Select * From Table1  2007-03-11 01:59:57.187157            Sql:StmtCompleted  Select * From Table1  2007-03-11 01:59:57.187  2007-03-11 03:00:07.187  9987
do mesmo modo, segue-se a saída de exemplo de um registo que regista uma consulta durante a alteração de hora de Novembro de 2007 relativas à hora de Verão:
EventSequence  EventClass         TextData              StartTime                EndTime                  Duration178            Sql:StmtStarting   Select * From Table1  2007-11-04 01:59:54.967179            Sql:StmtCompleted  Select * From Table1  2007-11-04 01:59:54.967  2007-11-04 01:00:05.030  10055

Problemas conhecidos relacionados com a hora de Verão SQL Server que não são específicas para as alterações da hora de Verão de 2007

Funções de data e hora DifData e SomData deixam de hora de Verão em atenção

Quando utiliza instruções de Transact-SQL para efectuar cálculos de tempo que se baseiam em data fornecidos pelo sistema e funções de tempo, tem de investigar cuidadosamente as instruções. Especificamente, se tiver escrito horas da hora de Verão no disco rígido código in a lógica da aplicação, as funções de sistema DifData e SomData não são hora de Verão em consideração.

Por exemplo, uma aplicação executa as seguintes instruções para calcular a diferença de tempo. O cálculo baseia-se a hora da hora de Verão antiga. Repare que em novo sistema de hora de Verão de 2007, 2007-03-11 é a data inicial da hora de Verão. No entanto, no sistema de hora de Verão antigo 2007-04-01 seria a inicial data da hora de Verão.
DECLARE @starttime datetimeDECLARE @endtime datetimeSELECT @starttime = GetDate() -- returns '2007-03-11 1:59:50.000'WAITFOR DELAY '00:00:30'SELECT @endtime = GetDate()   –- returns '2007-03-11 3:00:20.000' If @starttime < '2007-04-01 3:00:00.000' And    @endtime > '2007-04-01 1:59:59.000'	SELECT (cast((DATEDIFF(s, @starttime, @endtime)) as int) - 3600) AS TimeDiffInSecsElse	SELECT cast((DATEDIFF(s, @starttime, @endtime)) as int) AS TimeDiffInSecsGo
quando executa as instruções, receberá o seguinte resultado:
TimeDiffInSecs -------------- 3,630
uma vez que a função de sistema DifData não é hora de Verão em atenção, as instruções devolvem 3,630 segundos em vez de 30 segundos.

Para corrigir o cálculo de tempo em tais situações, utilize a função GetUtcDate em vez da função GetDate . A função GetUtcDate devolve a hora UTC actual. A hora UTC actual é derivada da hora local actual em conjunto com a definição de fuso horário no sistema operativo do computador no qual está com o SQL Server.

The following are modified statements that work correctly:
/*-------------------------------------------------------	  GetDate()		  GetUtcDate()datetime  2007-03-11 1:59:50.000  2007-03-11 09:59:50.000datetime  2007-03-11 3:00:20.000  2007-03-11 10:00:20.000-------------------------------------------------------*/DECLARE @starttime datetimeDECLARE @endtime datetimeSELECT @starttime = GetUtcDate() -- returns '2007-03-11 9:59:50.000'WAITFOR DELAY '00:00:30'SELECT @endtime = GetUtcDate()   –- returns '2007-03-11 10:00:20.000'  SELECT DATEDIFF (s, @starttime, @endtime) AS TimeDiffInSecsGo
When you run the statements, you receive the correct result as follows:
TimeDiffInSecs -------------- 30

Efeito da data de fim da hora de Verão em tarefas agendadas do SQL Server Agent

Considere o seguinte cenário. Tem uma tarefa SQL Server Agent agendada, que imprime horário local actual. A tarefa é executado a cada 15 minutos. Quando a alteração da hora de Verão ocorre em Novembro de 2007, o SQL Server Agent regista automaticamente a alteração da hora de Verão. Agente do SQL Server baseia o controlo no sistema operativo e actualiza correctamente a próxima execução agendada da tarefa.

The following is the sample output of the job:
Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-03-11 01:30:00CurrentTime    2007-03-11 01:30:00.343Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-03-11 01:45:00CurrentTime    2007-03-11 01:45:00.343Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-03-11 03:00:00CurrentTime    2007-03-11 03:00:00.357Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-03-11 03:15:00CurrentTime    2007-03-11 03:15:00.357
In this example, there is a one-hour gap between the run of the job at 2007-03-11 02:00:00 and the run of the job at 2007-03-11 03:00:00 as expected.

No entanto, existe um problema conhecido na qual não é possível executar tarefas agendadas do SQL Server Agent para uma hora durante o período a alteração de Novembro de 2007 relativas à hora de Verão ocorre. Depois do relógio é alterado de 2: 00 para 01: 00 em 4 de Novembro de 2007, trabalhos do SQL Server Agent seriam saltar a próxima hora e aguarde até 2: 00 para iniciar a próxima execução. Trata-se um problema conhecido. Este problema ocorreu mesmo sob as convenções relativas à hora de Verão de pré-2007. Este problema não resulta das alterações à hora de Verão de 2007.

The following is the sample output of the job:
Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-11-04 01:30:00CurrentTime    2007-11-04 01:30:00.343Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-11-04 01:45:00CurrentTime    2007-11-04  01:45:00.343one hour plus 15 minutes gap here */Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-11-04 02:00:00CurrentTime    2007-11-04 02:00:00.357Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-11-04 02:15:00CurrentTime    2007-11-04 02:15:00.357
Notice that in the sample output of the job, there is a one-hour-and-15-minute gap between the run of the job at 2007-11-04 01:45:00 and the run of the job at 2007-11-04 02:00:00. Este comportamento pode afectar as tarefas de agente de replicação, as tarefas de cópia de segurança, tarefas de envio do registo e outras tarefas agendadas no SQL Server.

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 931975 - Última Revisão: 11/20/2007 17:48:49 - Revisão: 3.5

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL 2005 Server Workgroup, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Enterprise Edition 64-bit

  • kbmt kbhowto kbexpertiseadvanced kbsql2005engine kbinfo KB931975 KbMtpt
Comentários