一尘不染

SQL Server作业/计划-美国与英国夏令时调整

sql

SQL Server作业/计划-美国与英国夏令时调整

我们有一台基于英国的服务器,需要在16:30(美国中部时间-这可能很奇怪,但这是由于某些数据的可用性)运行SQL Agent
Job。通常这不会造成问题,因为英国和美国之间的时差为6个小时,因此我们将工作安排在22:30进行。

但是,由于英美两国在3月和11月的不同时间调整时钟以节省夏令时,因此英美之间的时差为5个小时,为2周。

我想实现一种方法,其中SQL Server可以识别时差的这种变化,然后使用诸如sp_update_schedule之类的方法重新计划其自身的作业。

我要采取的一种方法是,在美国服务器上获取当前时间戳,然后将其与当前英国时间进行比较。如果时差为5小时,则将作业重新计划为21:30,如果时差为6小时,则将作业重新计划为22:30。

但是无论如何,可以建议另一种解决方案,也许不涉及在美国服务器上获取当前时间戳,并且理想情况下不必在表中存储夏令时调整日期列表。更有活力吗?


阅读 147

收藏
2021-05-23

共1个答案

一尘不染

实际上,您似乎已经提到了两个可行的解决方案:在该时区询问服务器或存储关键日期列表。关于下面为什么在第一个链接上的共鸣。您可以实现自己的功能(必须存储日期列表或要求服务器提供偏移量)。或者,您可以获得时区信息的公共域列表(如下面的第二个链接所示)。还有一些Web服务将返回偏移量。Oracle实现了该时区数据库,以在指定的时区之间进行转换,因此,如果您既已支持这两个时区,则可以做到这一点。

有一个C#实现,您可以在第三个链接中包装CLR函数。

2021-05-23