mssql sql server sys.sysprocesses 系统表简介

摘要
下文主要介绍 sysprocesses的功能及返回字段说明及应用场景



目录
1. sys.sysprocesses 系统表功能简介
2. sys.sysprocesses 系统表返回字段说明
3. sys.sysprocesses 系统表应用场景



1. sys.sysprocesses 系统表功能简介

sys.sysprocesses 是mssql数据库中一个非常重要的视图,主要用于返回当前db服务器中的运行中的进程ID



2. sys.sysprocesses 系统表返回字段说明

  select * from  sys.sysprocesses 
  

返回列说明:
2.1 spid:返回smallint类型,此列值为sql server session Id
2.2 kpid:返回samllint类型,此列值为window线程ID
2.3 blocked:返回smallint类型
如果此列为 null ,则代表此进程非阻塞,正常运行中,否则此列放置的为 被阻塞的进程spId
-2 被阻塞的进程为分布式事务
-3 资源阻塞导致
-4
2.4 waittype:返回binary类型 保留字段
2.5 waittime:返回bigint 当前进程等待时间 毫秒
0代表 进程未等待
2.6 lastwaittype:返回nchar 等待的类型
2.7 waitresource: 返回nchar 等待的资源位置 通常返回键锁定位置 RID: 12:1:1101210:0 2.8 dbId 返回smallint 返回当前进程所属的 数据库Id
2.9 uid 返回smallint 用户ID
2.10 cpu 返回进程所占用的Cpu 时间 毫秒 ,我们也可以通过打开 SET STATISTICS TIME on 属性 ,在查询分析器中查看cpu时间
2.11 physical_io 返回bigint 此进程累计使用硬盘的读和写
2.12 memusage 返回int 此进程所消耗的内存页数
2.13 login_time 返回datetime 此进程登陆服务器的时间
2.14 last_batch 返回datetime 此进程最后执行的时间,也可以理解为此进程执行完毕的时间
2.15 ecid 返回smallInt 通过此ID可以标识上下文的进程ID
2.16 open_tran 返回smallint 标识是否打开事务 此处值为1时,代表使用了 begin tran
2.17 status 返回nchar(30) 返回当前进程的状态

dormat:sql server重置了此session
running:此会话正在运行(运行完毕等待提交事务的进程 此处状态不为running)
background:此会话后台正在运行,例 死锁
rollback:此会话正在回滚
pending:此会话正在等待工作线程变为可用
suspended:此会话被其它进程阻塞需等待 ,例 事务未提交 I/o阻塞

sid:全球唯一用户标识
hostname:返回nchar 工作站名称
program_name 返回生成此会话的程序名称
hostprocess 返回工作站进程标识号
cmd:当前会话的命令描述 AWAITING COMMAND (等待命令)
nt_domain:当前客户端的作用域
nt_userName:当前客户端作用域的用户名
nt_address:此进程所对应用户的网络ID标识
net_library:此进程所对应的网络库
loginname:登陆sql所使用的用户名
context_info:
sql_handle:sql句柄 可关联其它系统函数,获取此进程所对应的sql脚本
note:
stmt_start:
stmt_end:
request_id:



3. sys.sysprocesses 系统表应用场景

检测系统当前被阻塞的进程ID

 select * from sys.sysprocesses where waittime >0 
 and blocked >0  ---获取进程被阻塞的ID 

检测指定数据库上的进程数

 select  *   from master..SysProcesses  where db_Name(dbID) = '指定数据库名称'    and spId <> @@SpId    and dbID <> 0