[SQL Server] sp_who, sp_who2和sp_who3

墨蓝 2022-07-12 14:10 336阅读 0赞

[SQL Server] sp_who, sp_who2和sp_who3

sp_who可以返回如下信息: (可选参数LoginName, 或active代表活动会话数)
Spid (系统进程ID)
status (进程状态)
loginame (用户登录名)
hostname(用户主机名)
blk (阻塞进程的SPID)
dbname (进程正在使用的数据库名)
Cmd (当前正在执行的 命令类型)

sp_who2除了显示上面sp_who的输出信息外,还显示下面的信息: (可选参数LoginName, 或active代表活动会话数)
CPUTime (进程占用的总CPU时间)
DiskIO (进程对磁盘读的总次数)
LastBatch (客户最后一次调用存储过程或者执行查询的时间)
ProgramName (用来初始化连接的应用程序名称,或者主机名)

sp_who3是某牛人自定义的存储过程,(可选参数spid),显示“非系统会话,且是活动的会话”的详细情况。

CREATEPROCEDURE sp_who3

( @SessionID int=NULL)

AS

BEGIN

SELECT

  1. SPID = er.session\_id
  2. ,Status = ses.status
  3. ,\[Login\] = ses.login\_name
  4. ,Host = ses.host\_name
  5. ,BlkBy = er.blocking\_session\_id
  6. ,DBName =DB\_Name(er.database\_id)
  7. ,CommandType = er.command
  8. ,SQLStatement = st.text
  9. ,ObjectName =OBJECT\_NAME(st.objectid)
  10. ,ElapsedMS = er.total\_elapsed\_time
  11. ,CPUTime = er.cpu\_time
  12. ,IOReads = er.logical\_reads \+ er.reads
  13. ,IOWrites = er.writes
  14. ,LastWaitType = er.last\_wait\_type
  15. ,StartTime = er.start\_time
  16. ,Protocol = con.net\_transport
  17. ,ConnectionWrites = con.num\_writes
  18. ,ConnectionReads = con.num\_reads
  19. ,ClientAddress = con.client\_net\_address
  20. ,Authentication = con.auth\_scheme

FROMsys.dm_exec_requests er

OUTERAPPLY sys.dm_exec_sql_text(er.sql_handle) st

LEFTJOINsys.dm_exec_sessions ses

ON ses.session_id = er.session_id

LEFTJOINsys.dm_exec_connections con

ON con.session_id = ses.session_id

WHERE er.session_id > 50

  1. AND @SessionID ISNULLOR er.session\_id = @SessionID

ORDERBY

  1. er.blocking\_session\_id DESC
  2. ,er.session\_id

END

go

发表评论

表情:
评论列表 (有 0 条评论,336人围观)

还没有评论,来说两句吧...

相关阅读