sql sqlserver的进程资源查看,杀掉多余进程

主要是由三个表组成 sys.sysprocesses、sys.dm_exec_sessions、sys.dm_exec_requests

后面两个在2008版本后使用,主要使用sys.dm_exec_sessions

SELECT

spid AS 会话ID, -- 进程(会话)的ID

blocked AS 被阻塞的会话ID, -- 正在阻塞此进程的会话ID(如果被阻塞,则为阻塞者的spid;否则为0)

waittime AS 等待时间毫秒, -- 进程等待资源的时间(毫秒)

lastwaittype AS 最后等待类型, -- 进程最后一次等待的资源类型

waitresource AS 等待资源, -- 进程正在等待的具体资源(如锁、键等)

dbid AS 数据库ID, -- 进程当前连接的数据库的ID

DB_NAME(dbid) AS 数据库名, -- 会话当前连接的数据库的名称

uid AS 用户ID, -- 执行此进程的用户ID

cpu AS CPU时间毫秒, -- 进程自启动以来所使用的CPU时间(毫秒)

physical_io AS 物理IO次数, -- 进程自启动以来所执行的物理I/O操作次数

memusage AS 内存使用量KB, -- 进程当前使用的内存量(KB)

loginame AS 登录名, -- 登录到SQL Server的用户的名称

hostname AS 主机名, -- 运行客户端应用程序的计算机的名称

program_name AS 程序名, -- 正在执行查询的客户端应用程序的名称

status AS 进程状态, -- 进程的状态(如running, sleeping, background等)

cmd AS 命令类型, -- 进程正在执行的命令类型(如SELECT, INSERT, UPDATE等)

last_batch AS [上次执行时间],

login_time AS 登录时间 -- 进程登录到SQL Server的时间

FROM

sys.sysprocesses

WHERE 1=1

and hostname='it028' or hostname='IT028'

and DB_NAME(dbid)='ShenLianERP_ittest';

--主要控制

SELECT

session_id AS 会话ID, -- 会话的唯一标识符

login_name AS 登录用户名, -- 登录到 SQL Server 的用户的名称

host_name AS 主机名, -- 运行客户端应用程序的计算机的名称

program_name AS 程序名, -- 正在执行查询的客户端应用程序的名称

status AS 会话状态, -- 会话的状态(如 running, sleeping 等)

cpu_time AS CPU时间毫秒, -- 会话自启动以来所使用的 CPU 时间(毫秒)

total_scheduled_time AS 总调度时间毫秒, -- 会话线程被调度到 CPU 上的总时间(毫秒)

memory_usage / 1024.0 AS 内存使用量MB, -- 会话当前使用的物理内存量(MB)

FORMAT(login_time, 'yyyy-MM-dd HH:mm:ss') AS 登录时间, -- 会话登录到 SQL Server 的时间

FORMAT(last_request_start_time, 'yyyy-MM-dd HH:mm:ss') AS 最后请求开始时间, -- 会话上最后一个请求开始的时间

FORMAT(last_request_end_time, 'yyyy-MM-dd HH:mm:ss') AS 最后请求结束时间, -- 会话上最后一个请求结束的时间

DB_NAME(database_id) AS 数据库名, -- 会话当前连接的数据库的名称

-- blocking_session_id AS 阻塞会话ID, -- 正在阻塞当前会话的会话 ID(NULL 表示未被阻塞)

open_transaction_count AS 打开事务数, -- 会话当前打开的事务数

CASE is_user_process

WHEN 1 THEN '用户进程'

ELSE '系统进程'

END AS 进程类型 -- 会话是用户进程还是系统进程

FROM

sys.dm_exec_sessions

WHERE 1=1

and host_name='it028'

and DB_NAME(database_id)='ShenLianERP_ittest'

ORDER BY

login_time DESC; -- 按登录时间降序排列结果

因为我开多线程查询了

进程状态时sleeping是正常的,过一段时间就会释放,如果想要快速释放可以将sleeping的进程杀掉

-- 查询可以杀掉的进程

SELECT 'kill '+ CAST(session_id AS NVARCHAR) +';'

FROM sys.dm_exec_sessions

WHERE status = 'sleeping'

and host_name='it028'

and DB_NAME(database_id)='ShenLianERP_ittest';

但是只要本地开发环境的服务停掉,进程就会自动释放的,我停掉本地服务后,进程就自动释放

SELECT

session_id AS 会话ID, -- 与请求关联的会话ID

request_id AS 请求ID, -- 在会话内唯一标识请求的ID

status AS 请求状态, -- 请求的状态(如running, suspended, waiting等)

command AS 命令类型, -- 正在执行的命令类型(如SELECT, INSERT等)

cpu_time AS CPU时间毫秒, -- 请求自启动以来使用的CPU时间(毫秒)

total_elapsed_time AS 总耗时毫秒, -- 请求自启动以来的总耗时(毫秒)

start_time AS 请求开始时间, -- 请求开始执行的时间戳

sql_handle AS SQL句柄, -- 用于唯一标识SQL语句的句柄

-- statement_start_offset 和 statement_end_offset 通常与其他DMV一起使用,这里为了简洁省略

plan_handle AS 计划句柄, -- 用于唯一标识查询计划的句柄

blocking_session_id AS 阻塞会话ID, -- 正在阻塞当前请求的会话ID(NULL表示未被阻塞)

wait_type AS 等待类型, -- 请求当前等待的资源类型

wait_time AS 等待时间毫秒, -- 请求已经等待的时间(毫秒)

wait_resource AS 等待资源, -- 请求正在等待的具体资源

open_transaction_count AS 打开事务数 -- 请求当前打开的事务数

FROM

sys.dm_exec_requests;

相关推荐
玩转4G物联网9 分钟前
零基础玩转物联网-串口转以太网模块如何快速实现与TCP服务器通信
服务器·网络·物联网·网络协议·tcp/ip·http·fs100p
派阿喵搞电子27 分钟前
Ubuntu下有关UDP网络通信的指令
linux·服务器·网络
傻啦嘿哟41 分钟前
Python 数据分析与可视化实战:从数据清洗到图表呈现
大数据·数据库·人工智能
程序员JerrySUN44 分钟前
全面理解 Linux 内核性能问题:分类、实战与调优策略
java·linux·运维·服务器·单片机
Theodore_10221 小时前
大数据(2) 大数据处理架构Hadoop
大数据·服务器·hadoop·分布式·ubuntu·架构
cookqq1 小时前
mongodb源码分析session异步接受asyncSourceMessage()客户端流变Message对象
数据库·sql·mongodb·nosql
呼拉拉呼拉1 小时前
Redis故障转移
数据库·redis·缓存·高可用架构
什么都想学的阿超1 小时前
【Redis系列 04】Redis高可用架构实战:主从复制与哨兵模式从零到生产
数据库·redis·架构
huangyuchi.1 小时前
【Linux】LInux下第一个程序:进度条
linux·运维·服务器·笔记·进度条·c/c++
蔡蓝1 小时前
设计模式-建造者模式
服务器·设计模式·建造者模式