SQL Server作业/计划-美国与英国夏令时调整
我们有一个基于英国的服务器,它需要在16:30 (美国中部时间-这可能看起来很奇怪,但由于一些数据的可用性)运行SQL代理作业。通常这不是问题,因为英国和美国的时差是6小时,所以我们把工作安排在22:30。
但由于英国和美国在3月和11月调整时钟的时间不同,因此有两周的时间,英国和美国之间的时差为5小时。
我想实现一种方式,让SQL Server可以识别这种时间差的变化,然后使用sp_update_schedule之类的东西重新调度作业。
我的一种方法是在基于美国的服务器上获取当前时间戳,然后将其与当前的英国时间进行比较。如果时间差为5小时,则将任务重新计划为21:30;如果时间差为6小时,则将任务重新计划为22:30。
但无论如何都可以提出另一种解决方案,可能不涉及在基于美国的服务器上获取当前时间戳,并且理想情况下不必在表中存储夏令时调整日期列表。也许是更有活力的东西?
发布于 2012-05-01 22:16:38
实际上,看起来您已经提到了两个可行的解决方案:询问该时区的服务器或存储关键日期列表。党的路线,为什么在下面的第一个链接。您可以实现自己的函数(该函数必须存储日期列表或向服务器请求偏移量)。或者,您可以获取时区信息的公共域列表(如下面的第二个链接所示)。还有几个web服务将返回偏移量。Oracle实现了时区数据库,以便在指定的时区之间进行转换,因此,如果您已经支持这两个时区,则可以这样做。
在第三个链接中有一个C#实现,您可以将其包装在CLR函数中。
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/
https://stackoverflow.com/questions/10398003
复制相似问题