首页 > 数据库 >SQL Server如何判断哪些会话/连接是长连接?

SQL Server如何判断哪些会话/连接是长连接?

时间:2024-06-06 09:00:50浏览次数:15  
标签:dm exec Server 会话 session connect SQL 连接

一般数据库中可能存在长连接或短连接会话。长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。如果不从应用程序入手,如何判断SQL Server数据库中哪些会话是长连接呢?

在SQL Server中有连接与会话的概念,一般而言,连接是物理概念,而会话则是逻辑上的概念。两者是对同一件事情不同层次的描述。简单讲,连接(Connection)是物理上的客户端同服务器的通信链路,会话(Session)是逻辑上的用户同服务器的通信交互。例如,在你的电脑上,使用SSMS客户端工具连接数据库,你可以开启多个会话,而连接只有一个。那么我们要判断长连接短连接,就必须使用连接的登陆时间,而不是会话的登陆时间。在SQL Server中sys.dm_exec_sessions中的login_time表示建立会话的时间,而DMV视图sys.dm_exec_connections中的connect_time表示建立连接时的时间戳,所以要你判断数据库的连接是长连接还是短连接,就可以使用sys.dm_exec_connections中的connect_time字段,假设一个连接建立超过5分钟(这个值可以根据实际情况或要求调整),就判断为长连接,那么可以使用下面SQL来查询

select s.login_name
     , s.host_name
     , c.client_net_address
  , c.local_net_address
  , c.connect_time
  , s.session_id
  , datediff(mi, connect_time, getdate()) as connect_duration_min 
from sys.dm_exec_connections c
inner join sys.dm_exec_sessions s on c.session_id =s.session_id
where c.session_id > 50 and c.local_net_address is not null
    and datediff(mi, connect_time, getdate())  >5
order by connect_duration_min;

统计长连接的设备/终端的信息

select distinct c.client_net_address,
       (select host_name from sys.dm_exec_sessions s where s.session_id = c.session_id) as host_name  
from sys.dm_exec_connections c
where c.session_id > 50 and c.local_net_address is not null
    and datediff(mi, c.connect_time, getdate())  >5
order by client_net_address,host_name;

标签:dm,exec,Server,会话,session,connect,SQL,连接
From: https://www.cnblogs.com/kerrycode/p/18234377

相关文章

  • U9C的数据查询视图Sql
    U9C的数据查询视图Sqlifobject_id('TEMPDB..#priceTable')isnotnullbegindroptable#priceTableendcreatetable#priceTable(polineCreatedOndate,pricevarchar(max),itemidvarchar(max),purchaseOrderdocnovarchar(max),)insertinto#priceTable......
  • python 连接sqlite简单示例
    importsqlite3#连接到SQLite数据库#数据库文件是test.db,如果文件不存在,会自动在当前目录创建#如果文件已存在,则连接到该数据库conn=sqlite3.connect('test.db')#创建一个游标对象#通过游标对象来执行SQL语句cursor=conn.cursor()#创建一个表cursor.execut......
  • MySQL-11.数据库的设计规范
    C-11.数据库的设计规范1.为什么需要数据库设计我们在设计数据表的时候,要考虑很多问题。比如:用户需要什么数据?需要在数据表中保存那些数据?如何保证数据表中数据的正确性,当插入,删除,更新的时候该进行怎样的约束检查?如何降低数据表的数据冗余度,保证数据表不会因为用户量的......
  • 【面试宝藏】MySQL 面试题解析
    MySQL面试题解析1.数据库三大范式是什么?第一范式(1NF):确保每列的原子性,即每列不能再分。第二范式(2NF):在满足1NF的基础上,每个非主属性完全依赖于主键,即消除部分依赖。第三范式(3NF):在满足2NF的基础上,任何非主属性不依赖于其他非主属性,即消除传递依赖。2.MySQL有关权限......
  • python 连接sqlite数据库
     首先要打开右边的Database,点击加号,选择图中的选项。  然后找到下载驱动,因为我的已经下载,就不提示了。在File类型后有三个点选择,找到自己创建的数据库。 之后就可以看到了。 实话来说,python确实比Java写的代码少,而且感觉跟容易理解,实现起来也是很直接。 ......
  • MyBatis的JdbcType与MySQL数据类型之间的对应关系
    MyBatis的JdbcType与MySQL数据类型之间存在一定的对应关系,这些映射帮助MyBatis在处理SQL查询时正确地将数据库中的数据类型转换为Java对象。以下是一些常用的MyBatisJdbcType与MySQL数据类型的对应关系:BIGINT-对应MySQL的BIGINT类型,用于存储大整数值。INTEGER -对应MySQL的......
  • 使用Python实现MySQL数据库备份
    数据库备份的重要性数据库备份是一项至关重要的任务,它可以帮助我们应对各种意外情况,如硬件故障、数据损坏、误操作等。通过定期备份数据库,我们可以保证数据的安全性,同时在发生意外时能够快速恢复数据,最大限度地减少业务影响和数据丢失。使用Python实现MySQL数据库备份使......
  • mysql阶段02 数据库基本操作, 误删用户案例解决, 数据库体系结构, mysql服务构成, mys
    一、数据库基本操作1.设置数据库密码[root@db03~]#mysqladmin-urootpassword'123456'2.使用密码登录#1.正确的登录方式[root@db03~]#mysql-uroot-p123456[root@db03~]#mysql-uroot-p123456#2.错误的登录方式[root@db03~]#mysql-uroot-p123456#3......
  • [email protected]].2700勒索病毒
     该病毒具有持续性威胁,可加密文件并窃取敏感信息。继续潜伏在计算机系统中,构成一种持续的威胁。受害者即使支付了赎金,也可能无法完全摆脱病毒的困扰。支付了赎金并获得了解密密钥,也不能保证病毒已经完全清除。病毒可能仍然隐藏在系统的某个角落,等待合适的时机再次发作。 ......
  • SQL--union用法
    UNION 是SQL中用于合并两个或多个 SELECT 语句结果集的操作符。这些 SELECT 语句必须选择相同数量的列,并且这些列的数据类型必须兼容。UNION 会自动去除结果集中的重复行,而如果你想要保留重复行,可以使用 UNIONALL。 UNION 的基本语法:制代码SELECT column_na......