DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 931975 - Última revisão: terça-feira, 20 de Novembro de 2007 - Revisão: 3.5

 

Nesta página

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.
Reduzir esta tabelaExpandir esta tabela
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:
    924840  (http://support.microsoft.com/kb/924840/ ) Está 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:
    931815  (http://support.microsoft.com/kb/931815/ ) actualizaçã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:
    http://support.microsoft.com/gp/cp_dst (http://support.microsoft.com/gp/cp_dst)

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                  Duration
156            Sql:StmtStarting   Select * From Table1  2007-03-11 01:59:57.187
157            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                  Duration
178            Sql:StmtStarting   Select * From Table1  2007-11-04 01:59:54.967
179            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 datetime
DECLARE @endtime datetime
SELECT @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 TimeDiffInSecs
Else
	SELECT cast((DATEDIFF(s, @starttime, @endtime)) as int) AS TimeDiffInSecs

Go
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.000
datetime  2007-03-11 3:00:20.000  2007-03-11 10:00:20.000
-------------------------------------------------------*/
DECLARE @starttime datetime
DECLARE @endtime datetime
SELECT @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 TimeDiffInSecs
Go
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:00
CurrentTime    2007-03-11 01:30:00.343

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-03-11 01:45:00
CurrentTime    2007-03-11 01:45:00.343

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-03-11 03:00:00
CurrentTime    2007-03-11 03:00:00.357

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-03-11 03:15:00
CurrentTime    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:00
CurrentTime    2007-11-04 01:30:00.343

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-11-04 01:45:00
CurrentTime    2007-11-04  01:45:00.343

one hour plus 15 minutes gap here */

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-11-04 02:00:00
CurrentTime    2007-11-04 02:00:00.357

Job 'Daylight Savings Job 1' : Step 1, 'step 1' : Began Executing 2007-11-04 02:15:00
CurrentTime    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.

A informação contida neste artigo aplica-se a:
  • 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
Palavras-chave: 
kbmt kbhowto kbexpertiseadvanced kbsql2005engine kbinfo KB931975 KbMtpt
Tradução automáticaTradução automática
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  (http://support.microsoft.com/kb/931975/en-us/ )
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft