Jak připravit SQL Server 2005 a SQL Server 2000 pro změny letního času v 2007

Překlady článku Překlady článku
ID článku: 931975 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Úvod

V srpnu 2005 předán Sněmovna U. S. ACT Energy zásad. Tento jednat změní datum zahájení a datum ukončení letní čas (DST). Při tomto jednat přejde do efekt v 2007, DST začne dříve tři týdny a bude ukončena jeden týden vyšší než při jeho tradičně spuštění a ukončeno. Konkrétně DST začne v 2: 00 na druhou neděli v březnu a skončí na 2: 00 na první neděle v listopadu.

Následující tabulka shrnuje změny letního času v 2007.
Zmenšit tuto tabulkuRozšířit tuto tabulku
Datum, kdy dříve spuštěn DSTDatum při spuštění DST v 2007Datum, kdy dříve ukončeno DSTDatum, kdy končí DST v 2007
První neděle v dubnuDruhá neděle v březnuPoslední neděle v říjnu První neděle v listopadu
By byly 1. dubna 200711. Března 2007By byly 28. října 20074. Listopadu 2007
Tento článek popisuje, jak připravit Microsoft SQL Server 2005 a 2000 Microsoft SQL Server pro změny LETNÍHO v 2007.

Další informace

Akce, které musí provést

Pokud máte nainstalován v počítači je nakonfigurována pro automatické úpravy LETNÍHO SQL Server a následující časové pásmo počítače za změny LETNÍHO v 2007, je nutné provést následující akce:
  • Instalaci aktualizace, které je popsáno v článku znalostní báze Microsoft Knowledge Base 924840. Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
    924840Zkušební verze aktualizace 2007 globální časové pásmo pro systém Windows je k dispozici
  • Pokud máte v počítači nainstalován SQL Server Notification Services, nainstalujte aktualizaci popsanou v článku znalostní báze Microsoft Knowledge Base 931815. Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
    931815aktualizace 2007 časové pásmo pro SQL Server 2005 Notification Services a SQL Server 2000 Notification Services
  • Nemáte žádné konkrétní aktualizace pro SQL Server SQL Server pracuje správně použít. Je však nutné aktualizovat operační systém. Navíc je nutné aktualizovat produktů a aplikací, které spolupracují se serverem SQL. Tyto produkty a aplikací může zahrnout upozornění služby Windows SharePoint Services, Microsoft CRM atd. Úplný seznam aktualizací, které je třeba použít pro jiné produkty společnosti Microsoft naleznete na následujícím webu:
    http://support.microsoft.com/gp/cp_dst

Používání času serveru SQL a vykazování

SQL Server 2005 a SQL Server 2000 databázový stroj SQL Server používá ke generování informací o době následujících dvou formulářů časovač:
  • S vysokým rozlišením časovače
  • S nízkým rozlišením časovače
Časovač s vysokým rozlišením je rozlišení časovače základě instrukce rozdíl mezi (číst Time Stamp Counter) PROCESORU. S nízkým rozlišením časovače je rozlišení časovače základě funkci GetTickCount v rozhraní API Microsoft Windows.

Různé úkoly založené časovač pozadí a důležité systémové součásti spoléhají na tyto časovačů pro správné fungování. Protože tyto časovače pracovat jako relativní rozměry z určitý čas, interní součásti a interní aktivity nejsou ovlivněny změny LETNÍHO v 2007.

Například provádět úkoly, které se týkají následující aktivity založeny časovač nebo součásti časovač pro:
  • Součásti systému například opožděných Zapisovatel, sledování uzamknout a sledování Plánovač
  • Například Opuštěné Vyčištění a auto shrink úlohy na pozadí
  • Založený na úvazek out prostředky jako například uzamčení a latches
  • Naplánované činnosti, jako je například SQL Server Agent úlohy a plány údržby
  • Příkazy systému například příkazu WAITFOR
SQL Server také generuje informace čas je k dispozici externí součásti a aplikace. Tyto informace čas je získán z operačního systému. Informace o čase je tedy přesné jako operační systém vrátí hodnotu správný čas.

Například provádět úkoly, které se týkají následující externí součásti a aplikace:
  • SQL Server Profiler nebo SQL Profiler událostí sloupců například sloupec Začátek, Konec sloupce a sloupce trvání pro různé události
  • Informace o čase, který je hlášen různé protokoly, například SQL Server Errorlog, protokoly událostí a systémových tabulek
  • Systémové funkce, například funkce GetDate a funkce GetUtcDate
Předpokládejme následující situaci. Vytvořit trasování SQL Server pomocí SQL Server Profiler nebo SQL Profiler. Trasovací záznamy dotaz spustí před března 2007 LETNÍHO času změnit a dokončí po změně března 2007 LETNÍHO času. Čas informace v tomto scénáři je přesné a letním ovlivněny.
Ukázkový výstup trasování je následující:
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
podobně následující je ukázkový výstup trasování zaznamenává dotaz během změnu listopad 2007 LETNÍHO času:
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

Známé SQL Server DST související problémy, které nejsou specifické pro změny LETNÍHO v 2007

Funkce DateDiff a DateAdd datum a čas nejsou vědomi DST

Při použití příkazů Transact-SQL provádět výpočty času, které jsou založeny na předpokladu systémové datum a čas funkce nutné pečlivě prozkoumat příkazy. Konkrétně Pokud napsané LETNÍHO času v pevném kódu aplikační logiku systémové funkce DateDiff a DateAdd nejsou DST vědomi.

Aplikace spustí například následující příkazy vypočítat časový rozdíl. Výpočet je založen na staré LETNÍHO času. Všimněte si, že pod nový systém DST v 2007 2007-03-11 je počáteční datum DST. Však pod starý systém DST 2007-04-01 by počáteční datum 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
Při spusťte příkazy se zobrazí následující výsledek:
TimeDiffInSecs 
-------------- 
3,630
systému funkce DateDiff se není DST vědomi, příkazy vrátit 3,630 sekund namísto 30 sekund.

Opravit výpočet času v takových situací, použijte funkci GetUtcDate namísto funkce GetDate. Funkce GetUtcDate vrací aktuální čas UTC. Aktuální čas UTC je odvozen z aktuální místní čas společně s nastavení časového pásma v operačním systému počítače, na kterém SQL Server spuštěn.

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

Vliv DST koncové datum na plánované úlohy SQL Server Agent

Předpokládejme následující situaci. Máte naplánované úlohy SQL Server Agent, která vytiskne aktuální místní čas. Spuštění úlohy každých 15 minut. SQL Server Agent v listopadu 2007 dojde ke změně DST, automaticky sleduje změny LETNÍHO. SQL Server Agent založen jeho sledování v operačním systému a aktualizace správně další naplánované spuštění úlohy.

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.

Však je známý problém, v němž nelze spustit naplánované úlohy SQL Server Agent pro jednu hodinu během období nastane změna listopad 2007 DST. Po změně hodin od 2: 00 do 4. listopadu 2007 na 1: 00 hodin by přeskočit další hodinu a počkejte, až 2: 00 do dalšího spuštění spustit SQL Server Agent úlohy. Jedná se o známý problém. Došlo k tomuto problému i pod konvence DST pre 2007. Tento problém není výsledkem z změny na DST 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. Toto chování může ovlivnit úlohy agenta replikace, zálohovací úlohy, protokolu přepravní úlohy a ostatní naplánované úlohy v SQL Server.

Vlastnosti

ID článku: 931975 - Poslední aktualizace: 20. listopadu 2007 - Revize: 3.5
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbmt kbhowto kbexpertiseadvanced kbsql2005engine kbinfo KB931975 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:931975

Dejte nám zpětnou vazbu

 

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