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),显示“非系统会话,且是活动的会话”的详细情况

  1. CREATE PROCEDURE sp_who3
  2. (
  3. @SessionID INT = NULL
  4. )
  5. AS
  6. BEGIN
  7. SELECT
  8. SPID = er.session_id
  9. ,STATUS = ses.STATUS
  10. ,[Login] = ses.login_name
  11. ,Host = ses.host_name
  12. ,BlkBy = er.blocking_session_id
  13. ,DBName = DB_Name(er.database_id)
  14. ,CommandType = er.command
  15. ,SQLStatement = st.text
  16. ,ObjectName = OBJECT_NAME(st.objectid)
  17. ,ElapsedMS = er.total_elapsed_time
  18. ,CPUTime = er.cpu_time
  19. ,IOReads = er.logical_reads + er.reads
  20. ,IOWrites = er.writes
  21. ,LastWaitType = er.last_wait_type
  22. ,StartTime = er.start_time
  23. ,Protocol = con.net_transport
  24. ,ConnectionWrites = con.num_writes
  25. ,ConnectionReads = con.num_reads
  26. ,ClientAddress = con.client_net_address
  27. ,Authentication = con.auth_scheme
  28.  
  29. FROM
  30. sys.dm_exec_requests er
  31. OUTER APPLY
  32. sys.dm_exec_sql_text(er.sql_handle) st
  33. LEFT JOIN
  34. sys.dm_exec_sessions ses
  35. ON
  36. ses.session_id = er.session_id
  37. LEFT JOIN
  38. sys.dm_exec_connections con
  39. ON
  40. con.session_id = ses.session_id
  41. WHERE
  42. er.session_id > 50
  43. AND
  44. @SessionID IS NULL OR er.session_id = @SessionID
  45. ORDER BY
  46. er.blocking_session_id DESC
  47. ,er.session_id
  48.  
  49. END
  50. GO

下面是另外一个版本的sp_who3,只显示活动中的非系统会话,并且不会显示当前数据库连接自己的会话:

  1. CREATE PROCEDURE [dbo].[sp_who3]
  2. @SPID SMALLINT = NULL
  3. AS
  4. BEGIN
  5. SET NOCOUNT ON
  6.  
  7. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
  8.  
  9. SELECT er.session_id AS SPID
  10. ,er.blocking_session_id AS BlkBy
  11. ,er.total_elapsed_time AS ElapsedMS
  12. ,er.cpu_time AS CPU
  13. ,er.logical_reads + er.reads AS IOReads
  14. ,er.writes AS IOWrites
  15. ,ec.execution_count AS Executions
  16. ,er.command AS CommandType
  17. ,OBJECT_SCHEMA_NAME(qt.objectid,dbid) + '.' + OBJECT_NAME(qt.objectid, qt.dbid) AS ObjectName
  18. ,SUBSTRING (qt.text,
  19. er.statement_start_offset/2,
  20. (CASE WHEN er.statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(MAX), qt.text)) * 2 ELSE er.statement_end_offset END - er.statement_start_offset)/2) AS SQLStatement
  21. ,ses.STATUS
  22. ,ses.login_name
  23. ,ses.host_name AS Host
  24. ,DB_Name(er.database_id) AS DBName
  25. ,er.last_wait_type AS LastWaitType
  26. ,er.start_time AS StartTime
  27. ,con.net_transport AS Protocol
  28. ,CASE ses.transaction_isolation_level
  29. WHEN 0 THEN 'Unspecified'
  30. WHEN 1 THEN 'Read Uncommitted'
  31. WHEN 2 THEN 'Read Committed'
  32. WHEN 3 THEN 'Repeatable'
  33. WHEN 4 THEN 'Serializable'
  34. WHEN 5 THEN 'Snapshot'
  35. END AS transaction_isolation
  36. ,con.num_writes AS ConnectionWrites
  37. ,con.num_reads AS ConnectionReads
  38. ,con.client_net_address AS ClientAddress
  39. ,con.auth_scheme AS Authentication
  40. FROM sys.dm_exec_requests er
  41. LEFT JOIN sys.dm_exec_sessions ses
  42. ON ses.session_id = er.session_id
  43. LEFT JOIN sys.dm_exec_connections con
  44. ON con.session_id = ses.session_id
  45. CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) AS qt
  46. OUTER APPLY
  47. ( SELECT execution_count = MAX(cp.usecounts)
  48. FROM sys.dm_exec_cached_plans cp
  49. WHERE cp.plan_handle = er.plan_handle
  50. ) ec
  51. WHERE er.session_id = ISNULL(@SPID, er.session_id)
  52. AND er.session_id != @@Spid
  53. ORDER BY
  54. er.blocking_session_id DESC,
  55. er.logical_reads + er.reads DESC,
  56. er.session_id ASC
  57.  
  58. END
  59. GO

原文链接

SQLSERVER 中sp_who, sp_who2和sp_who3(转载)的更多相关文章

  1. sp_who, sp_who2和sp_who3

    sp_who可以返回如下信息: (可选参数LoginName, 或active代表活动会话数)Spid         (系统进程ID)status      (进程状态)loginame  (用户登 ...

  2. 知方可补不足~sqlserver中使用sp_who查看sql的进程

    回到目录 在SQLSERVER中每个会话,即每个查询分析器窗口都会产生一个SQL进程,对于那些持续时间短的进程,它们转瞬即失,而对于持续时间比较长的,我们需要希望查看它的运行状态,就可以借助SQL提供 ...

  3. 【转载】 Sqlserver中通过Select Into语句快速单表备份

    在Sqlserver数据库中,备份数据的方式有很多种,可以使用整个数据库备份,也可使用导出包含数据和架构的脚本文件的方式来进行单表或多表数据的备份,其实还有一种Select Into的方式可以快速备份 ...

  4. 【转载】C#常用数据库Sqlserver中DATEPART() 函数

    在Sqlserver数据库中,DATEPART() 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等.DatePart()函数的语法为: DATEPART(datepart,date) ...

  5. 【转载】 Sqlserver中DateAdd()函数

    在Sqlserver数据库中,DATEADD() 函数在日期中添加或减去指定的时间间隔.例如计算当前时间往后一天的时刻以及往前1天的时刻时间即可使用DateAdd()函数来操作,DateAdd()函数 ...

  6. 【转载】Sqlserver中查询窗口显示行号

    在Sqlserver中编写语句的时候,有时候因为业务逻辑比较复杂,编写的语句会比较多,此时如果编辑器中显示代码的行号,则对于我们的语句编写有很好的辅助作用.sqlserver默认未开启行号显示功能,可 ...

  7. SqlServer中的merge操作(转载)

    SqlServer中的merge操作(转载)   今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有 ...

  8. 【转载】sqlserver中小数类型float和deciaml类型比较

    在sqlserver数据库中,float类型和double类型都可以用来表示小数类型,float类型是一种近似数值的小数类型,而decimal类型则是精确数值的小数类型.如果需要在sqlserver数 ...

  9. 【转载】Sqlserver中使用Round函数对计算结果四舍五入

    在实际应用的计算中,很多时候我们需要对最后计算结果四舍五入,其实在Sqlserver中也有对应的四舍五入函数,就是Round函数,Round函数的格式为Round(column_name,decima ...

随机推荐

  1. 纯css抖动效果

    HTML: <button class="shake">按钮</button> CSS: .shake{ width: 120px; height: 33p ...

  2. 元素的class和id问题

    一个元素有且只能有1个id,且全文中此id只能出现在一个元素上   一个元素不能写多次class,比如 <div class="a" class="b"& ...

  3. mybatis学习系列--逆向工程简单使用及mybatis原理

    2逆向工程简单测试(68-70) SqlSessionFactory sqlSessionFactory=getSqlSessionFactory(); SqlSession session = sq ...

  4. [20171206]rman与truncate2.txt

    [20171206]rman与truncate2.txt --//上午测试发现truncate的表在做rman备份时还要做8个extents的备份.--//不知道自己的猜测是否正确,选择一个使用UNI ...

  5. 测试中Android与IOS分别关注的点

    主要从本身系统的不同点.系统造成的不同点.和注意的测试点做总结 1.自身不同点 研发商:Adroid是google公司做的手机系统,IOS是苹果公司做的手机系统 开源程度:Android是开源的,IO ...

  6. Python基础知识:模块

    目录 JSON模块&pickle模块 requests模块 time模块 datetime模块 logging模块 os模块 sys模块 hashlib模块 re模块.正则表达式 config ...

  7. Matplotlib:可视化颜色命名分类和映射颜色分类

    Matplotlib中支持的所有颜色分类 映射颜色分类

  8. 【Java学习系列】第4课--Java Web相关

    本文地址 分享提纲: 1.概述 2. Jsp基础 2.1 1.概述 1.1)[来源和先导] 本文主要的java web的教程来源JSP是 菜鸟教程JSP 和 天码营Java Web.     主要的先 ...

  9. flush privileges 什么意思

    mysql> update mysql.user set password=PASSWORD(‘新密码’) where User=’root’;­ mysql> flush privile ...

  10. 关于前缀和,A - Hamming Distance Sum

    前缀和思想 Genos needs your help. He was asked to solve the following programming problem by Saitama: The ...