DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do 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 u. S. passado o Energy Policy Act. Esse ato altera a data de início e a data final do horário de verão (DST). Quando esse ato entra em vigor em 2007, DST começarão três semanas anteriormente e terminará uma semana posterior quando ele tradicionalmente iniciado e finalizada. Especificamente, DST começará às 2: 00 no segundo domingo de março e terminará às 2: 00 no primeiro domingo de novembro.

A tabela a seguir resume as alterações para o horário de verão em 2007.
Recolher esta tabelaExpandir esta tabela
Data quando o DST anteriormente iniciadoData quando o DST é iniciado em 2007Data quando o DST anteriormente concluídoData quando o DST termina em 2007
Primeiro domingo de abrilSegundo domingo de marçoÚltimo domingo de outubro Primeiro domingo de novembro
Teria sido 1 º de abril de 200711 De março de 2007Teria sido 28 de outubro de 20074 De novembro de 2007
Este artigo descreve como preparar o Microsoft SQL Server 2005 e Microsoft SQL Server 2000 para que as alterações à hora de verão em 2007.

Mais Informações

Ações que você deve executar

Se você tiver o SQL Server instalado em um computador que está configurado para ajustes automáticos do DST e o fuso horário do computador após as alterações à hora de verão no 2007, será necessário executar as seguintes ações:
  • Instale a atualização do Windows que é descrita no artigo da Base de dados de Conhecimento da Microsoft 924840. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    924840  (http://support.microsoft.com/kb/924840/ ) Uma versão de teste da atualização de fuso horário globais 2007 para o Windows está disponível
  • Se você tiver o SQL Server Notification Services instalado no computador, instale a atualização descrita 931815 de artigo da Base de dados de Conhecimento da Microsoft. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    931815  (http://support.microsoft.com/kb/931815/ ) atualização de fuso horário de 2007 para o SQL Server 2005 Notification Services e SQL Server 2000 Notification Services
  • Não é necessário aplicar quaisquer atualizações específicas para o SQL Server certificar-se que SQL Server funciona corretamente. No entanto, você deve atualizar o sistema operacional. Além disso, você deve atualizar os produtos e aplicativos que interagem com o SQL Server. Esses produtos e aplicativos podem incluir Notification Services, Windows SharePoint Services, Microsoft CRM, etc. Para obter uma lista completa de atualizações que você deve aplicar para outros produtos Microsoft, visite o seguinte site:
    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 mecanismo de banco de dados do SQL Server usa as seguintes duas formas de timer para gerar informações tempo:
  • Timer de alta resolução
  • Timer de baixa resolução
No timer de alta resolução, a resolução de timer é baseada em instrução a delta entre ler carimbo de hora contador (RDTSC) da CPU. No timer de baixa resolução, a resolução de timer é baseada na função ObterContagemMarcaEscala na API do Microsoft Windows.

Várias tarefas baseada no cronômetro em segundo plano e componentes críticos do sistema dependem desses temporizadores para seu funcionamento correto. Como desses temporizadores funcionam como medidas relativas de uma data específica, componentes internos e atividades internas não serão afetadas pelas alterações à hora de verão em 2007.

Por exemplo, você pode executar tarefas que envolvem o seguintes atividades baseadas no timer ou componentes baseados no timer:
  • Componentes de sistema, como gravador lento, monitor de bloqueio e Agendador monitor
  • Tarefas de plano de fundo, como limpeza de fantasma e redução automática
  • Recursos baseados em saída de tempo, como bloqueios e registradores de divisão
  • Atividades agendadas como trabalhos do SQL Server Agent e planos de manutenção
  • Instruções de sistema, como a instrução WAITFOR
O SQL Server também gera informações de tempo que são disponibilizadas para aplicativos e componentes externos. Essas informações de tempo são recuperadas do sistema operacional Windows. Portanto, as informações de tempo são precisas, desde que o sistema operacional retorna o valor tempo correto.

Por exemplo, você pode executar tarefas que envolvem os seguintes componentes externos e aplicativos:
  • SQL Server Profiler ou SQL Profiler colunas de eventos, como a coluna de Hora de início , a coluna de Hora de término e a coluna duração para vários eventos
  • Informações de tempo que são relatadas em vários logs, como o Errorlog do SQL Server, os logs de eventos e tabelas do sistema
  • Funções de sistema, como a função GetDate e a função GetUtcDate
Considere o seguinte cenário. Você criar um rastreamento do SQL Server usando o SQL Server Profiler ou SQL Profiler. Os registros de rastreamento de uma consulta que inicia antes do tempo março de 2007 DST alterar e termina após a alteração de tempo de março de 2007 DST. Nesse cenário, as informações de tempo são precisas e não são afetadas pelas alterações de horário de verão.
A seguir está a saída de exemplo do rastreamento:
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
da mesma forma, a seguir é a saída de exemplo de um rastreamento registra uma consulta durante a alteração de tempo de novembro de 2007 DST:
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 ao DST SQL Server que não são específicas para as alterações à hora de verão de 2007

Funções de data e hora DateDiff e DateAdd não são ciente do DST

Quando você usa instruções Transact-SQL para executar cálculos de tempo que são baseados em funções fornecido pelo sistema de data e hora, você deve investigar cuidadosamente as instruções. Especificamente, se você tiver gravado DST vezes no código do disco rígido na lógica do aplicativo, as funções de sistema DateDiff e DateAdd não são DST ciente.

Por exemplo, um aplicativo executa as instruções a seguir para calcular a diferença de tempo. O cálculo é baseado na hora DST antiga. Observe que, em novo sistema de hora de verão em 2007, 2007-03-11 é a data inicial do DST. No entanto, em sistema de DST antigo, 2007-04-01 seria a data inicial do DST.
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
ao executar as instruções, você recebe o seguinte resultado:
TimeDiffInSecs 
-------------- 
3,630
como a função DateDiff do sistema não está ciente do DST, as instruções retornam 3,630 segundos em vez de 30 segundos.

Para corrigir o cálculo de tempo em tais situações, use a função GetUtcDate em vez da função GetDate . A função GetUtcDate retorna a hora UTC atual. A hora UTC atual deriva a hora local atual com a configuração de fuso horário no sistema operacional do computador no qual o SQL Server está sendo executado.

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 término DST em trabalhos agendados do SQL Server Agent

Considere o seguinte cenário. Você tem um trabalho agendado do SQL Server Agent que imprima hora local atual. O trabalho será executado a cada 15 minutos. Quando a alteração DST ocorre em novembro de 2007, o SQL Server Agent controla automaticamente a alteração DST. SQL Server Agent baseia seu controle no sistema operacional e a próxima execução agendada do trabalho é atualizada corretamente.

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, há um problema conhecido no qual os trabalhos agendados do SQL Server Agent não é possível executar para uma hora durante o período quando ocorre a alteração de novembro de 2007 DST. Depois que o relógio é alterado de 2: 00 para 1: 00 em 4 de novembro de 2007, trabalhos do SQL Server Agent poderiam ignorar a próxima hora e espere até 2: 00 para iniciar a próxima execução. Esse é um problema conhecido. Esse problema ocorreu mesmo sob as convenções de DST pré-2007. Esse problema não resulta das alterações à hora de verão em 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. Esse comportamento pode afetar os trabalhos de agente de replicação, os trabalhos de backup, trabalhos de envio de log e outros trabalhos agendados 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 Server 2005 Enterprise Edition
  • 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 Server 2005 Workgroup Edition
  • 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store