Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 日志表包含错误时通知我_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 日志表包含错误时通知我

Sql 日志表包含错误时通知我,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在使用log4net,希望设置一个流程,在将记录写入Log表时通知我。我希望它每小时左右运行一次。我可能会使用以下查询: SELECT * FROM Log WHERE Level = 'ERROR' AND Datediff(hh,[Date],getdate()) < 1 从日志中选择* 其中级别='ERROR' 和Datediff(hh,[Date],getdate()) >子句: AND [Date] > (SELECT MAX(LastError) FROM d

我正在使用
log4net
,希望设置一个流程,在将记录写入
Log
表时通知我。我希望它每小时左右运行一次。我可能会使用以下查询:

SELECT * FROM Log 
WHERE Level = 'ERROR' 
AND Datediff(hh,[Date],getdate()) < 1 
从日志中选择*
其中级别='ERROR'
和Datediff(hh,[Date],getdate())<1
您可以使用(我假设您没有使用SQL Server Express)。你需要这样做。然后,您可以简单地安排一个每小时运行的作业,即:

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发生的错误,如果添加几秒钟的缓冲区,则可能会加倍报告6:59:59.997发生的错误。你可以做的是减轻你记录的最后一个错误,然后你可以添加一个附加的<代码> < < /C> >子句:

AND [Date] > (SELECT MAX(LastError) FROM dbo.LastErrorLog)
您可以使用(我假设您没有使用SQLServerExpress)。你需要这样做。然后,您可以简单地安排一个每小时运行的作业,即:

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发生的错误,如果添加几秒钟的缓冲区,则可能会加倍报告6:59:59.997发生的错误。你可以做的是减轻你记录的最后一个错误,然后你可以添加一个附加的<代码> < < /C> >子句:

AND [Date] > (SELECT MAX(LastError) FROM dbo.LastErrorLog)

我想知道在表上设置一个触发器是否是一种更好的方法?然后,您将收到一封针对记录的每个错误的电子邮件,而不是每小时1或0。如果这是你想要的,那么是的,但这不是你想要的。我想知道在桌子上放一个触发器是否是一个更好的方法?然后你会收到一封电子邮件,记录每一个错误,而不是每小时1或0。如果那是你想要的,那么是的,但那不是你想要的。