IDE:Visual Studio,C#.net 4.0,Winforms应用程序
在SQL Server中有没有办法在表中实现一个列,当它没有从应用程序端收到任何ACK(确认)信号时,它可以自动设置为0?
要求是我想保留一个列,该列可以跟踪应用程序是打开还是已关闭?
实现的一种方法是使用OnClose()
事件,即在Close()
上我可以将其值更改为0.但问题是假设应用程序由于某种原因被挂起或者电源是超过数据库中的值将不会更新为零。
所以我想创建一个自动列,它可以跟踪这种情况,当应用程序没有发送任何请求或空闲意味着关闭时,它自己为零。
请建议如何处理。
答案 0 :(得分:0)
你做不到。您可以做的唯一事情是将GETDATE()
保存在表中的列中作为应用程序的最后活动时间,并且例如每隔10秒从高优先级线程调用存储过程。
如果您想知道应用程序是否处于活动状态,只需检查此值,如果超过10秒,那么您的应用程序就会消失。
更新:
更精确但更复杂的方法是在应用程序内部监听套接字,然后每当您想知道应用程序是否处于活动状态时,从您的sql脚本向PING
应用程序发送请求。你应该使用CLR编程来实现这种方法,但我认为第一个实际上就足够了。
答案 1 :(得分:0)
考虑到它将是一个多实例场景,其中应用程序的多个实例可以指向同一个数据库。您可以尝试以下方法: