触发被杀死的会话

时间:2011-01-20 09:45:05

标签: sql sql-server tsql

我想在会话被终止/结束时使用触发器。有可能吗?

我的程序正在连接表格并在线时更新“在线”字段。如果我的程序崩溃或我的mssql连接被杀,我想更新“在线”字段......

例如:当我的程序在线时,它会被spid并更新SERVICE_TABLE(spid,online)

SEVICE_TABLE
------------
id
spid
online

当会话被终止/结束时,触发器查找SERVICE_TABLE。在SERVICE_TABLE中杀死spid,将“online”字段更新为false。

2 个答案:

答案 0 :(得分:2)

我们有类似的情况。我基本上在我们的服务表中添加了“lastseen”。客户端中的后台进程每分钟更新一次该字段。 (每次更新字段时,请务必创建新的数据库连接。)

如果“lastseen”字段过去超过5分钟,我们假设应用程序已经走了兴登堡的路。

答案 1 :(得分:1)

SQL Server中没有DDL注销触发器(尽管有登录触发器)。 Service Broker可用于处理AUDIT_LOGOUT事件。

Does this help