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


8

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

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

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

回答:


12

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

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

これは、時間の終わりまで、毎分同じ無限ループジョブを生成するだけですか?
ブランドン

いいえ、どのジョブでも、常に1つのインスタンスしか実行できません。
Max Vernon

ジョブが失敗または停止した場合、約1分で再起動されます。
Max Vernon

1
うん、いいよ。そうなのかと思っていましたが、試す機会がありませんでした。続けて、ここで見るものは何もない。
ブランドン

1
ジョブステップでログに成功または失敗を書き込む場合は、ループを終了するように指示する必要があることに注意してください。
Peter Vandivier

4

この答えは正しいとは思いません。その理由は次のとおりです。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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.