6

SQLServerのジョブ/スケジュール-米国と英国の夏時間の調整

英国を拠点とするサーバーがあり、16:30にSQLエージェントジョブを実行する必要があります(米国中部標準時–これは奇妙に思えるかもしれませんが、一部のデータが利用できるためです)。英国と米国の時差は6時間なので、通常これは問題にはなりません。そのため、22:30に仕事をスケジュールします。

ただし、英国と米国は夏時間のために3月と11月の異なる時間に時計を調整するため、英国と米国の時差が5時間になる2週間の期間があります。

SQL Serverがこの時差の変化を識別し、sp_update_scheduleのようなものを使用して、それ自体でジョブを再スケジュールできる方法を実装したいと思います。

私が持っているアプローチの1つは、米国ベースのサーバーで現在のタイムスタンプを取得し、それを現在の英国の時刻と比較することです。時差が5時間の場合は、ジョブを21:30に再スケジュールし、時差が6時間の場合は、ジョブを22:30に再スケジュールします。

しかし、とにかく別の解決策を提案できます。おそらく、米国ベースのサーバーで現在のタイムスタンプを取得する必要がなく、理想的には夏時間調整日のリストをテーブルに保存する必要がないものです。もっとダイナミックなものかもしれませんか?

4

1 に答える 1

3

実際には、2つの実行可能な解決策について言及したようです。そのタイムゾーンでサーバーに問い合わせるか、重要な日付のリストを保存します。以下の最初のリンクで理由についてのパーティーライン。独自の関数を実装できます(日付のリストを保存するか、サーバーにオフセットを要求する必要があります)。または、タイムゾーン情報のパブリックドメインリストを取得することもできます(以下の2番目のリンクを参照)。オフセットを返すWebサービスもいくつかあります。Oracleは、指定されたタイムゾーン間で変換するタイムゾーンのデータベースを実装しているため、すでに両方をサポートしている場合は、それを実行できます。

3番目のリンクでCLR関数にラップできるC#実装があります。

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/

于 2012-05-01T14:16:38.473 に答える