2012-05-01 9 views
5

SQL Server Lavoro/Orari - noi contro di regolazione del Regno Unito ora legaleSQL Server Lavoro/Orari - noi contro di regolazione del Regno Unito ora legale

Abbiamo un assistente sede nel Regno Unito che ha bisogno di eseguire un processo di SQL Agent alle 16: 30 (ora centrale degli Stati Uniti - questo può sembrare strano ma a causa della disponibilità di alcuni dati). Di solito questo non sarebbe un problema perché la differenza di fuso orario tra il Regno Unito e gli Stati Uniti è di 6 ore, quindi programmiamo il nostro lavoro per le 22:30.

Ma poiché Regno Unito e Stati Uniti regolano i loro orologi in momenti diversi a marzo e novembre per l'ora legale, c'è un periodo di 2 settimane in cui la differenza di fuso orario tra Regno Unito e Stati Uniti è di 5 ore.

Vorrei implementare un modo in cui SQL Server potrebbe identificare questo cambiamento di differenza di orario e quindi riprogrammare il lavoro in modo autonomo utilizzando qualcosa come sp_update_schedule.

Un approccio che ho è quello di ottenere il timestamp corrente su un server basato negli Stati Uniti e quindi confrontarlo con l'attuale ora del Regno Unito. Se la differenza di orario è 5 ore, quindi riprogrammare il lavoro alle 21:30, se la differenza di orario è 6 ore, quindi riprogrammare il lavoro alle 22:30.

Ma può comunque suggerire un'altra soluzione, forse una che non implichi ottenere il timestamp corrente sul server con sede negli Stati Uniti e idealmente non dover memorizzare un elenco di date di regolazione dell'ora legale in una tabella. Qualcosa di più dinamico forse?

+1

di SQL 'GETUTCDATE' potrebbe essere utile – Paddy

risposta

3

In realtà, sembra che tu abbia menzionato le due soluzioni valide: chiedi a un server in quel fuso orario o memorizzi un elenco di date critiche. La linea del partito sul perché al primo link qui sotto. È possibile implementare la propria funzione (che dovrebbe memorizzare un elenco di date o chiedere a un server l'offset). Oppure puoi ottenere un elenco di pubblico dominio delle informazioni sul fuso orario (come nel secondo link qui sotto). Ci sono anche diversi servizi web che restituiranno compensazioni. Oracle implementa quel database di fusi orari per la conversione tra fusi orari denominati, quindi se già supporti entrambi puoi farlo.

Esiste un'implementazione C# che è possibile includere nelle funzioni CLR al terzo collegamento.

http://blogs.msdn.com/b/sqlprogrammability/archive/2008/03/18/using-time-zone-data-in-sql-server-2008.aspx

http://www.twinsun.com/tz/tz-link.htm

http://timezone.codeplex.com/

Problemi correlati