我有一份工作需要在午夜时分运行7个时区。有没有办法在Windows Server 2008 R2上的SQL 2008 R2中创建单个计划,这将告诉proc要处理哪个时区?
答案 0 :(得分:2)
如果您有一台SQL服务器,则必须设置7个单独的预定呼叫 - 每个时区一个,以便在此特定时区的午夜运行。这是最好的方法。
它只是发生在我身上 - 你的意思是你想要在每个时区的午夜运行(正如我所假设的) - 即在7个不同的时间,或在当前时区的午夜,但同时处理7个独立时区的数据(在这种情况下不同时区处理的区别是什么?
答案 1 :(得分:2)
SQL Server代理不支持时区。您可以通过计算来确定程序中的时区:
SELECT DATEDIFF(MINUTE, GETDATE(), GETUTCDATE());
因此,您可以将计划设置为每小时运行一次,然后在该过程中检查上述结果是否在您的7个时区之一中生成。如果没有,请返回。
您可以将7个时区存储在一个表中,这样当您添加第8个时区时,您无需更改该过程。
您可能还需要根据您将来可能支持的时区进行更细化 - 有些不是UTC的n小时数。例如Newfoundland是半小时:比UTC晚2.5或3.5小时,具体取决于夏令时。