在 SQL Server 中检测客户端的断开连接

Posted

技术标签:

【中文标题】在 SQL Server 中检测客户端的断开连接【英文标题】:Detecting disconnection of the client in SQL Server 【发布时间】:2012-06-23 10:18:38 【问题描述】:

当与 SQL Server 的客户端连接(来自客户端)被切断时, 如何在 SQL Server(2008 或 2012)中检测到这种断开连接?

我可以用服务器触发器解决这个问题吗?

【问题讨论】:

【参考方案1】:

您可以为Audit Logout 事件创建一个event notification。通知可以启动activated procedure。考虑一下事件通知是异步的。

【讨论】:

【参考方案2】:

您可以查询sys 表之一 (sysprocesses)

SELECT 
   DB_NAME(dbid) AS Database, 
   loginame AS LoginName
FROM  sys.sysprocesses

您还可以运行以下存储过程来查看谁处于活动状态:

 sp_who2 

您必须让 SQL 作业或活动代理检查谁退出了。

【讨论】:

Database 是保留字,需要加括号,如:[Database]。否则我们会得到“关键字‘数据库’附近的语法不正确”。我试图编辑你的帖子,但我的编辑被拒绝了。 如果您需要在用户重新登录或重用会话 ID 之前捕获“事件”,则此方法不起作用。

以上是关于在 SQL Server 中检测客户端的断开连接的主要内容,如果未能解决你的问题,请参考以下文章

如何在WebSocket的服务器侧检测客户端的断开连接

Socket服务器端如何检测客户端的连接状态?

如何确定与 SignalR 客户端的服务器断开连接?

如何断开除sa之外的sql server中的所有用户?

socket编程中,服务器如何检测到客户端网络连接的断开.比如说客户端的网线断掉了,从服务端如何能检测到呢l

如何在socket.io中的断开事件上获取断开连接的客户端的套接字ID