3秒ごとにジョブを実行したいのですが、SQL Server 2008では10秒未満の間隔を定義できません。
このジョブは、訪問者情報とセグメンテーション情報を、Google検索で追跡されるデータベースに挿入/更新するために使用されます。
2〜3秒で最大約100行が挿入されます。そのジョブは、データベースにテーブルを挿入して更新します。spジョブスケジューリング構成を使用してスケジュールする方法はありますか?
3秒ごとにジョブを実行したいのですが、SQL Server 2008では10秒未満の間隔を定義できません。
このジョブは、訪問者情報とセグメンテーション情報を、Google検索で追跡されるデータベースに挿入/更新するために使用されます。
2〜3秒で最大約100行が挿入されます。そのジョブは、データベースにテーブルを挿入して更新します。spジョブスケジューリング構成を使用してスケジュールする方法はありますか?
回答:
毎分開始するようにスケジュールされたジョブを作成します。仕事に次のようなことをさせます:
WHILE 1=1
BEGIN
EXEC dbo.SomeProcedure; /* this would be the
name of a stored procedure that does the
actual work */
WAITFOR DELAY '00:00:03.000';
END
この答えは正しいとは思いません。その理由は次のとおりです。dbo.SomeProcedureが2秒間実行され、午前10:00:00に開始するとします。その後、このプロシージャが終了した後、さらに3秒間待機してから再起動します。つまり、10:00:02amです。 、終了し、午前10:00:05まで開始しません。3秒ごとに実行するジョブを実際にスケジュールできたとしても、dbo.SomeProcedureは実際に午前10:00:00と10:00:03 amに実行され、以下同様に実行されます。より正確なものは次のとおりです。
WHILE 1=1
BEGIN
EXEC dbo.SomeProcedure; /* this would be the
name of a stored procedure that does the actual work */
WHILE datediff(second, @dt, getdate())%3 <> 0
WAITFOR DELAY '00:00:00.100'; -- can be made it to '00:00:00.001'
END