0

私は使用してlog4netおり、レコードがテーブルに書き込まれたときに通知するプロセスを設定したいと考えていLogます。1時間ごとに実行したいと思います。私はおそらくこのクエリを使用します:

SELECT * FROM Log 
WHERE Level = 'ERROR' 
AND Datediff(hh,[Date],getdate()) < 1 
4

1 に答える 1

3

SQL Server エージェント ジョブを使用できます(SQL Server Express を使用していないと仮定します)。データベース メールを設定する必要があります。次に、次のような 1 時間ごとに実行されるジョブを簡単にスケジュールできます。

IF EXISTS 
(
  SELECT 1 FROM dbo.[Log] 
    WHERE Level = 'ERROR' 
    AND [Date] >= DATEADD(HOUR, -1, GETDATE())
)
BEGIN
    EXEC msdb.dbo.sp_send_dbmail ...
END

この科学は正確ではないことに注意してください... ジョブが 8:00 の数秒後に開始されると、7:00:01 に発生したエラーを見逃す可能性があり、数秒のバッファーを追加すると、2 倍になる可能性があります。 6:59:59.997 で発生したエラーを報告します。WHEREこれを軽減するために検討できることは、記録した最後のエラーをどこかに保存することです。その後、句を追加できます。

AND [Date] > (SELECT MAX(LastError) FROM dbo.LastErrorLog)
于 2012-07-02T22:49:31.983 に答える