私は使用してlog4net
おり、レコードがテーブルに書き込まれたときに通知するプロセスを設定したいと考えていLog
ます。1時間ごとに実行したいと思います。私はおそらくこのクエリを使用します:
SELECT * FROM Log
WHERE Level = 'ERROR'
AND Datediff(hh,[Date],getdate()) < 1
私は使用してlog4net
おり、レコードがテーブルに書き込まれたときに通知するプロセスを設定したいと考えていLog
ます。1時間ごとに実行したいと思います。私はおそらくこのクエリを使用します:
SELECT * FROM Log
WHERE Level = 'ERROR'
AND Datediff(hh,[Date],getdate()) < 1
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)