关注小程序 找一找教程网-随时随地学编程

SqlServer教程

sqlserver sp_who2和inputbuffer的使用,连接数

一、sp_who2的使用

1、存储过程的位置

  

   sp_who官方解释地址:https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-who-transact-sql?redirectedfrom=MSDN&view=sql-server-2017

 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、功能:查看某个进程的执行语句

2、官网解释:https://docs.microsoft.com/zh-cn/sql/t-sql/database-console-commands/dbcc-inputbuffer-transact-sql?view=sql-server-2017

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