Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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 - Fatal编程技术网

Sql 通知用户历史记录方案设计

Sql 通知用户历史记录方案设计,sql,sql-server,Sql,Sql Server,我想在服务停止和停止时通知用户,这是我现在的设计(只是为了演示) 当服务关闭时,我将向历史记录中添加一条停机时间和正常运行时间为空的记录。在服务启动之前,我将查找具有相对serviceId的最后一个历史记录 并更新正常运行时间。我不知道这是不是一个正确的设计。可能要分开两条记录吗?我更喜欢分开两条记录。我想添加注释字段,解释为什么服务关闭,或者如何修复以恢复服务 模式如下 Table History HistoryID int, ServiceID int, Status varchar(4)

我想在服务停止和停止时通知用户,这是我现在的设计(只是为了演示)

当服务关闭时,我将向历史记录中添加一条停机时间和正常运行时间为空的记录。在服务启动之前,我将查找具有相对serviceId的最后一个历史记录
并更新正常运行时间。我不知道这是不是一个正确的设计。可能要分开两条记录吗?

我更喜欢分开两条记录。我想添加注释字段,解释为什么服务关闭,或者如何修复以恢复服务

模式如下

Table History

HistoryID int,
ServiceID int,
Status varchar(4),
StatusTime datetime2(3),
Comment varchar(50)
HistoryID   ServiceID     Status       StatusTime               Comment
1               1         Down         2016-05-03 00:00:00      Problem happens because xxx
2               1         Up           2016-05-04 00:00:00      Restart the service
然后,数据会是这样的

Table History

HistoryID int,
ServiceID int,
Status varchar(4),
StatusTime datetime2(3),
Comment varchar(50)
HistoryID   ServiceID     Status       StatusTime               Comment
1               1         Down         2016-05-03 00:00:00      Problem happens because xxx
2               1         Up           2016-05-04 00:00:00      Restart the service
*编辑 如果您想展示以下内容:

ServiceID:1不工作时间:2016/05/03正常运行时间:2016/05/04

您可以使用模式使select语句更容易。但我仍然建议您使用Comment让您知道是什么原因导致服务宕机,以及如何修复它。这将有助于更好地维护您的服务。您可以为每个向下状态插入新行,并为向上状态更新最后一行。 例如:

HistoryID ServiceID  DownTime UpTime  DownComment UpComment
    1         1         xxx    xxx       xxx         xxx
    2         1         xxx    NULL      xxx         NULL

第一行表示服务已经修复,并在xxx时间启动。第二行表示服务再次停机,但尚未修复。

在本方案中,如果您有许多相同的服务ID,如何显示历史记录record@MichaelMao您希望如何显示历史记录?如果只想显示最后一条记录,则只需使用
max(StatusTime)
进行选择。或者,如果您想显示1个ServiceID的所有记录,则可以选择它并按ServiceID分组(以检查此服务的中断时间)。类似于ServiceID:1 donwtime:2016/05/03正常运行时间:2016/05/04。完整显示需要上下时间,但一个服务可能会上下多次。@MichaelMao架构的构建方式取决于如何获取记录以及如何显示记录。因为你没有明确说明你想如何显示你的记录,或者这种上下颠倒的情况发生的频率,但是,请注意,我在其中添加了DownComment和UpComment,以便将来让你知道是什么原因导致了下下翻问题以及如何解决。我有一个问题,如果我有下翻记录,现在服务启动了。如何找到这个记录并更新它的正常运行时间。我想我可以选择正常运行时间为空的最后一个记录并更新它。但这是一个好办法吗?这就是我在起源问题中提出的问题。顺便说一句,我知道如何编写代码,我关心的是这种设计是正确的。谢谢你的帮助。非常感谢