gpt4 book ai didi

sql - 如何根据数据库表中的日志确定停机时间

转载 作者:行者123 更新时间:2023-12-03 00:12:18 25 4
gpt4 key购买 nike

我有一个数据库表,其中保存应用程序报告的错误日志。

如果发生某些错误,应用程序需要人工干预才能再次激活。

我需要对日志进行排序并确定每对事件之间累积的总时间。

因此,当应用程序进入错误状态(在某个时间需要干预)时,我需要找到应用程序重新启动的下一个错误日志所耗时。

然后我需要计算每对事件之间总耗时的总和。

表格如下所示:

ErrorID |  ErrorMessage | ErrorDateTime
---------------------------------------------
20 | ex. msg 1 | 2013-09-01 00:10:10
21 | ex. msg 2 | 2013-09-01 00:10:15
22 | ex. msg 3 | 2013-09-01 00:10:20
23 | ERROR | 2013-09-01 00:10:25
24 | ex. msg 4 | 2013-09-01 00:10:30
25 | ex. msg 5 | 2013-09-01 00:10:35
26 | ex. msg 6 | 2013-09-01 00:10:37
27 | App Restarted | 2013-09-01 00:11:30
28 | ex. msg 7 | 2013-09-01 00:11:35
29 | ex. msg 8 | 2013-09-01 00:11:40
30 | ex. msg 9 | 2013-09-01 00:11:43
31 | ERROR | 2013-09-01 00:11:45
32 | ex. msg 10 | 2013-09-01 00:12:10
33 | ex. msg 11 | 2013-09-01 00:12:20
34 | ex. msg 12 | 2013-09-01 00:12:22
35 | App Restarted | 2013-09-01 00:13:30

所以基本上我需要找到每个错误的时间戳和后续应用程序重新启动日志消息之间的差异。

然后获取所有这些持续时间的总和

有人能指出我正确的方向吗?

最佳答案

;WITH x AS
(
SELECT ErrorID, ErrorMessage, ErrorDateTime,
rn = ROW_NUMBER() OVER (ORDER BY ErrorDateTime, ErrorID)
FROM dbo.YourLogTable
WHERE ErrorMessage IN ('ERROR', 'App Restarted')
)
SELECT
y.ErrorID,
x.ErrorID,
[Back_Up] = y.ErrorDateTime,
SecondsDown = DATEDIFF(SECOND, y.ErrorDateTime, x.ErrorDateTime)
FROM x
LEFT OUTER JOIN x AS y
ON x.rn = y.rn + 1
WHERE x.ErrorMessage = 'App Restarted';

这为您提供了每次停机的持续时间。我不确定 SUM 在应用程序的生命周期内有什么值(value)?限制在一定的时间范围内吗?还有别的事吗?但你可以这样得到它:

;WITH x AS
(
SELECT ErrorID, ErrorMessage, ErrorDateTime,
rn = ROW_NUMBER() OVER (ORDER BY ErrorDateTime)
FROM dbo.YourLogTable
WHERE ErrorMessage IN ('ERROR', 'App Restarted')
)
SELECT
TotalDowntime = SUM(DATEDIFF(SECOND, y.ErrorDateTime, x.ErrorDateTime))
FROM x
LEFT OUTER JOIN x AS y
ON x.rn = y.rn + 1
WHERE x.ErrorMessage = 'App Restarted';

关于sql - 如何根据数据库表中的日志确定停机时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18748182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com