一、sp_who2的使用
1、存储过程的位置
2、查出的列名的含义
CPUTime : 进程占用的总CPU时间,单位是毫秒,比查询窗口里的执行时间要小,所以这个时间不能是进程的执行时间,只是占用CPU的时间,一个查询可能还能有从磁盘读取数据的时间,和磁盘的I/O交互时间,这段时间说否还占用CPU,不清楚,实践发现这个时间是小于查询窗口的执行时间的。
DiskIO:进程对磁盘读的总次数,IOPS
LastBatch:客户最后一次调用存储过程或者执行查询的时间
ProgramName:用来初始化连接的应用程序名称或者主机名
BLKBy:用来指出被锁住的进程ID,例如:下面的57就是被55进程给锁住了
ProgramName:使用该进程的项目
3、进程的状态
running:正在运行一个或多个批
suspended:挂起,正在等待事件完成(如I/O),也有可能是其他进程把表锁住了,如上图BlkBy下面的截图
runnable:可运行的进程(可能已经跑完了,也有可能正在执行,比如大的查询,循环插入表的操作,可以多执行几次sp_who2看一下后面的CPUTime是否有变化)
background:后台执行的进程,例如死锁检测
sleeping:睡眠的进程(已经跑完了)
dormant:SQLServer正在重置会话
rollback:会话正在处理事务回滚
pending:会话中的任务正在调节锁变为可用
4、根据进号查询指定进程的信息
命令:exec sp_who2 55
5.sp_who可以根据登录用户名查询该用户的进程(查出的列显示不全)
命令:exec sp_who dbrun
6.查看数据库的最大连接数
命令:select @@MAX_CONNECTIONS
7.查看数据库自上次启动以来的连接次数
命令:select @@CONNECTIONS
7.查看指定数据库的当前连接数
命令:
select * from master.dbo.sysprocesses where dbid in
(
select dbid from master.dbo.sysdatabases where name='run'
)
二、dbcc inputbuffer()
1、功能:查看某个进程的执行语句
3、使用例子
(1)创建表,插入数据
--a.创建表
CREATE TABLE dbo.T1 (Col1 int, Col2 char(3));
GO
--b.执行插入数据
DECLARE @i int = 0;
BEGIN TRAN
SET @i = 0;
WHILE (@i < 100000)
BEGIN
INSERT INTO dbo.T1 VALUES (@i, CAST(@i AS char(3)));
SET @i += 1;
END;
COMMIT TRAN;
(2)使用inputbuffer查看进程执行的语句
命令:dbcc inputbuffer(62)
转自:https://www.cnblogs.com/jialanyu/p/11573164.html
标签:inputbuffer,sp,sqlserver,查询,sql,进程,执行 From: https://www.cnblogs.com/XDSoft/p/18163665