他のDB(ポストグレス)に転送するために前日(SQLサーバーDB)からデータを取得する必要がありますが、データが巨大であるため、2時間だけレコードを転送したいので、このジョブを1日12回実行します。転送時間は 2 時間です。転送されたレコードは重複してはなりません。
したがって、基本的には、12 回実行するようにスケジュールでき、それぞれ 2 時間分のレコードを転送するクエリが必要です。
他のDB(ポストグレス)に転送するために前日(SQLサーバーDB)からデータを取得する必要がありますが、データが巨大であるため、2時間だけレコードを転送したいので、このジョブを1日12回実行します。転送時間は 2 時間です。転送されたレコードは重複してはなりません。
したがって、基本的には、12 回実行するようにスケジュールでき、それぞれ 2 時間分のレコードを転送するクエリが必要です。
declare @StartHour datetime, @EndHour datetime
set @EndHour = dateadd(hh,datediff(hh,0,GetDate()),0)
set @StartHour = dateadd(hh,-2,@EndHour)
--The above make the query work with start and end on-the-hour
--so it can be run any time within one hour to get the data
--for the two hours ending on the previous hour
select * from whatever where TheDate between @StartHour and @EndHour
挿入にタイムスタンプを付ける場合は、select を実行して、直前の 2 時間分のレコードのみを抽出するのは簡単です。
SELECT * FROM tblFoo WHERE tblFoo.insertionDate>DATEADD(hour,-2,GETDATE())
(正確にしたい場合は、GETDATEを使用せずに、テーブルまたは変数で最後に実行された日付を保持し、毎回2時間を追加して、クエリの実行後に設定します)