In agosto 2005, il n uniti passato il Energy Policy Act. Questa azione consente di modificare sia la data di inizio e la data finale dell'ora legale (DST). Quando questa azione entra in vigore in 2007, dell'ora legale verrā avviata tre settimane precedenti e terminerā una settimana successiva quando č in genere avviato e terminata. In particolare, dell'ora legale inizierā alle 2: 00 della seconda domenica di marzo e terminerā alle 2: 00 della prima domenica di novembre.
Nella tabella seguente sono riepilogate le modifiche all'ora legale nel 2007.
Riduci questa tabellaEspandi questa tabella
| Data in cui DST avviato in precedenza | Data di inizio dell'ora legale nel 2007 | Data in precedenza terminata all'ora legale | Data la fine di ora legale nel 2007 |
|---|
| Prima domenica di aprile | Seconda domenica di marzo | Ultima domenica di ottobre | Prima domenica di novembre |
| Sarebbe stato 1 aprile 2007 | 11 Marzo 2007 | Sarebbe stato 28 ottobre 2007 | 4 Novembre 2007 |
In questo articolo viene spiegato come preparare di Microsoft SQL Server 2005 e Microsoft SQL Server 2000 per le modifiche all'ora legale nel 2007.
Azioni che č necessario eseguire
Se si dispone di SQL Server installato in un computer configurato per la regolazione dell'ora legale automatica e il fuso orario del computer segue le modifiche all'ora legale nel 2007, č necessario effettuare le seguenti operazioni:
- Installare l'aggiornamento per Windows č descritto nell'articolo di Microsoft Knowledge Base 924840. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
924840
(http://support.microsoft.com/kb/924840/
)
Una versione di test dell'aggiornamento fuso orario globale 2007 per Windows č disponibile
- Se hai installato nel computer SQL Server Notification Services, installare l'aggiornamento descritto nell'articolo di Microsoft Knowledge Base 931815. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
931815
(http://support.microsoft.com/kb/931815/
)
aggiornamento di fuso orario 2007 per SQL Server 2005 Notification Services e SQL Server 2000 Notification Services
- Non č necessario installare eventuali aggiornamenti specifici per SQL Server per assicurarsi che SQL Server funzioni correttamente. Tuttavia, č necessario aggiornare il sistema operativo. Inoltre, č necessario aggiornare i prodotti e le applicazioni che interagiscono con SQL Server. Questi prodotti e applicazioni potrebbero includere Notification Services, Windows SharePoint Services, Microsoft CRM e cosė via. Per un elenco completo di aggiornamenti che č necessario applicare per altri prodotti Microsoft, visitare il seguente sito Web Microsoft:
Utilizzo del tempo di SQL Server e reporting
In SQL Server 2005 e in SQL Server 2000, il motore di database di SQL Server utilizza le seguenti due forme di timer per generare informazioni di tempo:
- Timer ad alta risoluzione
- A bassa risoluzione timer
Nel timer ad alta risoluzione, la risoluzione del timer č basata sull'istruzione RDTSC (lettura timestamp contatori) della CPU. Nel timer a bassa risoluzione, la risoluzione del timer č basata sulla funzione
GetTickCount nell'API di Microsoft Windows.
Varie attivitā in background basato su timer e i componenti critici del sistema si basano su questi timer per il corretto funzionamento. Poiché questi timer funzionano come misure relative da un'ora specifica, componenti interni e le attivitā interne non influiranno le modifiche all'ora legale nel 2007.
Ad esempio, č possibile eseguire attivitā che richiedono le seguenti attivitā basato su timer componenti basati su timer:
- Componenti di sistema quali Lazywriter, blocco monitor e monitor di utilitā di pianificazione
- Attivitā di background, ad esempio pulitura fantasma e compattazione automatica
- Basato sulla uscita di volta di risorse quali i blocchi e latch
- Attivitā pianificate, ad esempio i processi di Agente SQL Server e piani di manutenzione
- Istruzioni di sistema, ad esempio l'istruzione WAITFOR
SQL Server genera inoltre informazioni relative all'ora resa disponibile a componenti esterni e applicazioni. Queste informazioni ora viene recuperate dal sistema operativo Windows. Di conseguenza, le informazioni di tempo siano accurate, purché il sistema operativo restituisce il valore di ora corretta.
Ad esempio, č possibile eseguire attivitā che richiedono i seguenti componenti esterni e le applicazioni:
- SQL Server Profiler o SQL Profiler colonne di eventi ad esempio la colonna dell'Ora di inizio , la colonna dell'Ora di fine e la colonna durata per vari eventi
- Informazioni sull'ora riportato in diversi registri quali log degli errori di SQL Server, i registri eventi e le tabelle di sistema
- Funzioni di sistema, ad esempio la funzione GetDate e la funzione GetUtcDate
Si consideri lo scenario seguente. Č possibile creare una traccia di SQL Server utilizzando SQL Server Profiler o SQL Profiler. I record di traccia una query che viene avviato prima dell'ora legale di marzo 2007, modificare e finisce dopo la modifica di ora legale di marzo 2007. In questo scenario, le informazioni di tempo sono precise e non sono interessate da modifiche dell'ora legale.
Seguito č riportato l'output di esempio della traccia:
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
Analogamente, di seguito č l'output di esempio di una traccia che registra una query durante la modifica del tempo di novembre 2007 ora legale:
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
Problemi noti relativi all'ora legale SQL Server non sono specifici le modifiche all'ora legale nel 2007
DateDiff e DateAdd funzioni di data e ora non sono a conoscenza dell'ora legale
Quando si utilizza istruzioni Transact-SQL per eseguire i calcoli temporali basate su data fornito dal sistema e funzioni di tempo, č necessario esaminare attentamente le istruzioni. In particolare, se avere scritto volte all'ora legale nel disco rigido codice la logica dell'applicazione, le funzioni
DateDiff e
DateAdd non sono a conoscenza dell'ora legale.
Ad esempio, un'applicazione esegue le istruzioni seguenti per calcolare la differenza di tempo. Il calcolo č basato sull'ora legale precedente. Si noti che in un nuovo sistema di ora legale nel 2007, 2007-03-11 č la data iniziale dell'ora legale. Tuttavia, sotto il precedente sistema di ora legale, 2007 / 04 / 01 sarā la data iniziale dell'ora legale.
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 si esegue delle istruzioni, viene visualizzato il seguente risultato:
TimeDiffInSecs
--------------
3,630
poiché la funzione
DateDiff di sistema non č a conoscenza dell'ora legale, le istruzioni restituiscono 3,630 secondi invece di 30 secondi.
Per correggere il calcolo del tempo in tali scenari, utilizzare la funzione di
GetUtcDate anziché la funzione
GetDate . La funzione di
GetUtcDate restituisce l'ora TUC corrente. L'ora TUC corrente č derivata dall'ora locale corrente insieme con l'impostazione fuso orario nel sistema operativo del computer in cui č in esecuzione 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
Effetto della data di fine dell'ora legale per i processi Agente SQL Server pianificati
Si consideri lo scenario seguente. Č necessario un processo SQL Server Agent pianificata che stampa local time corrente. Il processo viene eseguito ogni 15 minuti. Quando la modifica dell'ora legale si verifica nel novembre 2007, Agente SQL Server registra automaticamente la modifica dell'ora legale. Agente SQL Server si basa la registrazione sul sistema operativo e della prossima esecuzione pianificata del processo viene aggiornata correttamente.
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.
Tuttavia, non vi č un problema noto in cui č pianificati processi Agente SQL Server non possono eseguire per un'ora durante il periodo di quando si verifica la modifica dell'ora legale di novembre 2007. Dopo l'orologio viene modificato dal luogo alle 02: 00 alle 1: 00 4 novembre 2007, i processi di Agente SQL Server potrebbero ignorare l'ora successiva e attendere 2: 00 per avviare la successiva esecuzione. Si tratta di un problema noto. Questo problema si č verificato anche nelle convenzioni di ora legale 2007 di pre. Questo problema non viene generato dalle modifiche a 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. Questo comportamento potrebbe interessano i processi di agente di replica, i processi di backup, i processi di distribuzione dei log e altri processi pianificati in SQL Server.
Identificativo articolo: 931975 - Ultima modifica: martedė 20 novembre 2007 - Revisione: 3.5
Le informazioni in questo articolo si applicano 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
| kbmt kbhowto kbexpertiseadvanced kbsql2005engine kbinfo KB931975 KbMtit |
Traduzione automatica articoliIl presente articolo č stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non č sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pių o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non č la sua. Microsoft non č responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo:
931975
(http://support.microsoft.com/kb/931975/en-us/
)
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.