web-dev-qa-db-ja.com

SQL Server 2008で10秒未満のジョブをスケジュールする方法

3秒ごとにジョブを実行したいのですが、SQL Server 2008では、10秒未満の間隔を定義できません。

このジョブは、訪問者情報とセグメンテーション情報を、Google検索で追跡されるデータベースに挿入/更新するために使用されます。

2〜3秒で最大約100行が挿入されます。そのジョブは、データベースにテーブルを挿入して更新します。 spジョブスケジューリング構成を使用してスケジュールする方法はありますか?

8

毎分開始するようにスケジュールされたジョブを作成します。仕事に次のようなことをさせます:

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
12
Max Vernon

この答えは正しいとは思いません。その理由は次のとおりです。dbo.SomeProcedureが2秒間実行され、午前10:00:00に開始するとします。その後、このプロシージャが終了した後、さらに3秒間待機してから再起動します。つまり、10:00:02amです。 、終了し、午前10:00:05まで開始しません。本当に3秒ごとに実行するようにジョブをスケジュールできたとしても、dbo.SomeProcedureは実際に10:00:00 amと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
4
jyao