Cómo preparar SQL Server 2005 y SQL Server 2000 para cambios de horario de verano en 2007

Seleccione idioma Seleccione idioma
Id. de artículo: 931975 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

INTRODUCCIÓN

En agosto de 2005, el congreso de EE.UU. pasa la política energética. Esta ley cambia tanto la fecha de comienzo y la fecha final del horario de verano (DST). Cuando esta ley entre en vigor en 2007, DST comenzará tres semanas antes y finalizará una semana posterior cuando inicia normalmente y terminada. Específicamente, el DST comenzará en 2: 00 A.M. del segundo domingo de marzo y finalizará a las 2: 00 A.M. del primer domingo de noviembre.

La tabla siguiente resume los cambios al horario de verano en 2007.
Contraer esta tablaAmpliar esta tabla
Fecha de inicio DST anteriormenteCuando se inicia DST de 2007 de fechaFecha de finalización DST anteriormenteCuando finalice el horario de verano en 2007 de fecha
Primer domingo de abrilSegundo domingo de marzoÚltimo domingo de octubre Primer domingo de noviembre
Habría sido el 1 de abril de 200711 De marzo de 2007Habría sido el 28 de octubre de 20074 De noviembre de 2007
Se explica cómo preparar Microsoft SQL Server 2005 y Microsoft SQL Server 2000 para los cambios del DST de 2007.

Más información

Acciones que se deben llevar a cabo

Si tiene instalado SQL Server en un equipo que está configurado para ajustes automáticos de DST y la zona horaria del equipo sigue los cambios del horario de verano en 2007, debe seguir las siguientes acciones:
  • Instalar la actualización para Windows que se describe en artículo 924840. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    924840Hay disponible una versión de prueba de la actualización de zona horaria global de 2007 para Windows
  • Si tiene instalado en el equipo de SQL Server Notification Services, instale la actualización que se describe en artículo de Microsoft Knowledge Base 931815. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    931815actualización de zona horaria de 2007 para SQL Server 2005 Notification Services y SQL Server 2000 Notification Services
  • No es necesario aplicar las actualizaciones específicas de SQL Server para asegurarse de que SQL Server funciona correctamente. Sin embargo, debe actualizar el sistema operativo. Además, debe actualizar los productos y las aplicaciones que interactúan con SQL Server. Estos productos y las aplicaciones pueden incluir Notification Services, Windows SharePoint Services, Microsoft CRM y así sucesivamente. Para obtener una lista completa de actualizaciones que debe aplicar para otros productos de Microsoft, visite el siguiente sitio Web:
    http://support.microsoft.com/gp/cp_dst

Uso de la hora de SQL Server e informes

En SQL Server 2005 y en SQL Server 2000, el motor de base de datos de SQL Server utiliza las siguientes dos formas de temporizador para generar información de hora:
  • Temporizador de alta resolución
  • Temporizador de baja resolución
En el temporizador de alta resolución, la resolución del temporizador se basa en la instrucción de marca de tiempo de lectura (diferencia, entre RDTSC contador) de la CPU. En el temporizador de baja resolución, la resolución del temporizador se basa en la función GetTickCount de la API de Microsoft Windows.

Varias tareas basadas en temporizador fondo y componentes críticos del sistema dependen de estos temporizadores para su correcto funcionamiento. Dado que estos temporizadores funcionan como medidas relativas de una hora específica, los componentes internos y actividades internas no afectará por los cambios del horario de verano en 2007.

Por ejemplo, realizar las tareas que implican las siguientes actividades basadas en temporizador o componentes basados en temporizador:
  • Componentes del sistema como escritor diferido, monitor de bloqueos y monitor de programador
  • Tareas de fondo como fantasma limpieza y la reducción automática
  • Recursos basados en tiempo-out, como bloqueos y pestillos
  • Actividades programadas como trabajos del Agente SQL Server y los planes de mantenimiento
  • Instrucciones de sistema como, por ejemplo, la instrucción WAITFOR
SQL Server también genera información de tiempo que estará disponible para los componentes externos y las aplicaciones. Esta información de tiempo se recupera del sistema operativo Windows. Por tanto, la información de hora es precisa, siempre que el sistema operativo devuelve el valor de hora correcta.

Por ejemplo, realizar tareas que implican los siguientes componentes externos y las aplicaciones:
  • Columnas de evento de Analizador de SQL Server o Analizador de SQL como la columna de Hora de inicio , la columna de Hora de finalización y la columna duración para distintos sucesos
  • Información de tiempo que se notifica en diversos registros como el registro de errores de SQL Server, los registros de sucesos y las tablas del sistema
  • Funciones del sistema como la función GetDate y la función GetUtcDate
Tenga en cuenta la situación siguiente. Crear una traza de SQL Server mediante el Analizador de SQL Server o Analizador de SQL. Los registros de seguimiento, una consulta que se inicia antes el tiempo de marzo de 2007 DST cambie y finaliza después el cambio de hora de marzo de 2007 DST. En este escenario, la información de tiempo es precisa y no se ve afectada por los cambios de DST.
El siguiente es el resultado de ejemplo de la traza:
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
igual modo, ésta es la salida de ejemplo de una traza que registra una consulta durante el cambio de hora de noviembre 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 conocidos relacionados con DST SQL Server que no son específicos a los cambios del horario de verano en 2007

Las funciones de fecha y hora DateDiff y AgregFecha no son consciente del DST

Cuando utiliza instrucciones Transact-SQL para realizar cálculos de tiempo que se basan funciones proporcionadas por el sistema fecha y hora, debe investigar detenidamente las instrucciones. En concreto, si ha escrito DST veces en el disco duro código en la lógica de aplicación, las funciones de sistema DateDiff y AgregFecha no son DST tenga en cuenta.

Por ejemplo, una aplicación ejecuta las instrucciones siguientes para calcular la diferencia de tiempo. El cálculo se basa en el horario antiguo. Observe que en el nuevo sistema horario de verano en 2007 2007-03-11 es la fecha inicial del horario de verano. Sin embargo, en el antiguo sistema de DST, 2007-04-01 sería la fecha inicial del horario de verano.
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
cuando ejecuta las instrucciones, recibe el siguiente resultado:
TimeDiffInSecs 
-------------- 
3,630
dado que la función de sistema DateDiff no es consciente del DST, las instrucciones devuelven 3,630 segundos en lugar de 30 segundos.

Para corregir el cálculo de tiempo en estos casos, utilice la función GetUtcDate en lugar de la función GetDate . La función GetUtcDate devuelve la hora UTC actual. La hora UTC actual se deriva de la hora local actual junto con la configuración de zona horaria en el sistema operativo del equipo en el que se está ejecutando 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

Efecto de la fecha de final de DST en trabajos del Agente SQL Server programados

Tenga en cuenta la situación siguiente. Tiene un trabajo programado de SQL Server Agent que imprime local time actual. El trabajo se ejecuta cada 15 minutos. Cuando se produce el cambio de DST en noviembre de 2007, Agente SQL Server realiza un seguimiento automáticamente el cambio de DST. Agente SQL Server se basa su seguimiento en el sistema operativo y se actualiza correctamente la próxima ejecución programada del trabajo.

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.

Sin embargo, hay un problema conocido en los que no se pueden ejecutar trabajos del Agente SQL Server programados para una hora durante el período cuando se produzca el cambio de noviembre de 2007 DST. Después de cambia el reloj volver desde las 2: 00 A.M. a 1: 00 A.M. del 4 de noviembre de 2007, trabajos del Agente SQL Server podrían omitir la próxima hora y espere hasta que ejecute 2: 00 A.M. para iniciar la siguiente. Se trata de un problema conocido. Se ha producido este problema incluso en las convenciones de DST anteriores a 2007. Este problema no se produce de los cambios del horario de verano en 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 comportamiento podría afecta a los trabajos del agente de replicación, los trabajos de copia de seguridad, los trabajos de envío de registro y otros trabajos programados en SQL Server.

Propiedades

Id. de artículo: 931975 - Última revisión: martes, 20 de noviembre de 2007 - Versión: 3.5
La información de este artículo se refiere 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
Palabras clave: 
kbmt kbhowto kbexpertiseadvanced kbsql2005engine kbinfo KB931975 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 931975

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com