2012-05-01 13 views
5

SQL Server Praca/Harmonogramy - US vs. regulacja UK letniSQL Server Praca/Harmonogramy - US vs. regulacyjne UK Daylight Savings

Mamy UK oparciu serwer, który potrzebuje do uruchomienia SQL agenta zadania w formacie 16: 30 (czas centralny w Stanach Zjednoczonych - może wydawać się to dziwne, ale wynika to z dostępności niektórych danych). Zwykle nie stanowi to problemu, ponieważ różnica czasu między Wielką Brytanią i USA wynosi 6 godzin, więc planujemy naszą pracę na 22:30.

Ponieważ jednak Wielka Brytania i USA dostosowują swoje zegary o różnych porach w marcu i listopadzie w zakresie oszczędności czasu letniego, istnieje dwutygodniowy okres, w którym różnica czasu między Wielką Brytanią i USA wynosi 5 godzin.

Chciałbym wdrożyć sposób, w jaki SQL Server może zidentyfikować tę zmianę różnicy czasu, a następnie ponownie zaplanować zadanie samodzielnie przy użyciu czegoś takiego jak sp_update_schedule.

Jedna z metod polega na uzyskaniu aktualnego znacznika czasu na serwerze w USA, a następnie porównania go z bieżącym czasem w Wielkiej Brytanii. Jeśli różnica czasu wynosi 5 godzin, prześlij ponownie zlecenie do 21:30, jeśli różnica czasu wynosi 6 godzin, a następnie prześlij zlecenie do godziny 22:30.

Ale może i tak zasugerować inne rozwiązanie, być może takie, które nie wymagałoby pobrania aktualnego znacznika czasu na serwerze w USA i najlepiej nie przechowywać listy dat regulacji oszczędności w tabeli. Może coś bardziej dynamicznego?

+1

SQL na 'GETUTCDATE' może być przydatny – Paddy

Odpowiedz

3

Wygląda na to, że wspomniałeś o dwóch realistycznych rozwiązaniach: zapytaj o serwer w tej strefie czasowej lub zapisz listę ważnych dat. Linia partyjna, dlaczego na pierwszym linku poniżej. Możesz zaimplementować swoją własną funkcję (która będzie albo przechowywać listę dat, albo poprosić serwer o przesunięcie). Możesz też uzyskać listę domen publicznych z informacjami o strefie czasowej (jak w drugim linku poniżej). Istnieje również kilka serwisów internetowych, które zwrócą przesunięcia. Oracle zaimplementuje tę bazę danych stref czasowych do konwersji między nazwanymi strefami czasowymi, więc jeśli już wspierasz, możesz to zrobić.

Istnieje implementacja C#, którą można zawijać w funkcje CLR na trzecim łączu.

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/