[SQL Server] sp_who, sp_who2和sp_who3
[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
SPID = er.session\_id
,Status = ses.status
,\[Login\] = ses.login\_name
,Host = ses.host\_name
,BlkBy = er.blocking\_session\_id
,DBName =DB\_Name(er.database\_id)
,CommandType = er.command
,SQLStatement = st.text
,ObjectName =OBJECT\_NAME(st.objectid)
,ElapsedMS = er.total\_elapsed\_time
,CPUTime = er.cpu\_time
,IOReads = er.logical\_reads \+ er.reads
,IOWrites = er.writes
,LastWaitType = er.last\_wait\_type
,StartTime = er.start\_time
,Protocol = con.net\_transport
,ConnectionWrites = con.num\_writes
,ConnectionReads = con.num\_reads
,ClientAddress = con.client\_net\_address
,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
AND @SessionID ISNULLOR er.session\_id = @SessionID
ORDERBY
er.blocking\_session\_id DESC
,er.session\_id
END
go
还没有评论,来说两句吧...