SQLSERVER 中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),显示“非系统会话,且是活动的会话”的详细情况
- CREATE PROCEDURE 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
- FROM
- sys.dm_exec_requests er
- OUTER APPLY
- sys.dm_exec_sql_text(er.sql_handle) st
- LEFT JOIN
- sys.dm_exec_sessions ses
- ON
- ses.session_id = er.session_id
- LEFT JOIN
- sys.dm_exec_connections con
- ON
- con.session_id = ses.session_id
- WHERE
- er.session_id > 50
- AND
- @SessionID IS NULL OR er.session_id = @SessionID
- ORDER BY
- er.blocking_session_id DESC
- ,er.session_id
- END
- GO
下面是另外一个版本的sp_who3,只显示活动中的非系统会话,并且不会显示当前数据库连接自己的会话:
- CREATE PROCEDURE [dbo].[sp_who3]
- @SPID SMALLINT = NULL
- AS
- BEGIN
- SET NOCOUNT ON
- SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
- SELECT er.session_id AS SPID
- ,er.blocking_session_id AS BlkBy
- ,er.total_elapsed_time AS ElapsedMS
- ,er.cpu_time AS CPU
- ,er.logical_reads + er.reads AS IOReads
- ,er.writes AS IOWrites
- ,ec.execution_count AS Executions
- ,er.command AS CommandType
- ,OBJECT_SCHEMA_NAME(qt.objectid,dbid) + '.' + OBJECT_NAME(qt.objectid, qt.dbid) AS ObjectName
- ,SUBSTRING (qt.text,
- er.statement_start_offset/2,
- (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
- ,ses.STATUS
- ,ses.login_name
- ,ses.host_name AS Host
- ,DB_Name(er.database_id) AS DBName
- ,er.last_wait_type AS LastWaitType
- ,er.start_time AS StartTime
- ,con.net_transport AS Protocol
- ,CASE ses.transaction_isolation_level
- WHEN 0 THEN 'Unspecified'
- WHEN 1 THEN 'Read Uncommitted'
- WHEN 2 THEN 'Read Committed'
- WHEN 3 THEN 'Repeatable'
- WHEN 4 THEN 'Serializable'
- WHEN 5 THEN 'Snapshot'
- END AS transaction_isolation
- ,con.num_writes AS ConnectionWrites
- ,con.num_reads AS ConnectionReads
- ,con.client_net_address AS ClientAddress
- ,con.auth_scheme AS Authentication
- FROM sys.dm_exec_requests er
- LEFT JOIN sys.dm_exec_sessions ses
- ON ses.session_id = er.session_id
- LEFT JOIN sys.dm_exec_connections con
- ON con.session_id = ses.session_id
- CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) AS qt
- OUTER APPLY
- ( SELECT execution_count = MAX(cp.usecounts)
- FROM sys.dm_exec_cached_plans cp
- WHERE cp.plan_handle = er.plan_handle
- ) ec
- WHERE er.session_id = ISNULL(@SPID, er.session_id)
- AND er.session_id != @@Spid
- ORDER BY
- er.blocking_session_id DESC,
- er.logical_reads + er.reads DESC,
- er.session_id ASC
- END
- GO
SQLSERVER 中sp_who, sp_who2和sp_who3(转载)的更多相关文章
- sp_who, sp_who2和sp_who3
sp_who可以返回如下信息: (可选参数LoginName, 或active代表活动会话数)Spid (系统进程ID)status (进程状态)loginame (用户登 ...
- 知方可补不足~sqlserver中使用sp_who查看sql的进程
回到目录 在SQLSERVER中每个会话,即每个查询分析器窗口都会产生一个SQL进程,对于那些持续时间短的进程,它们转瞬即失,而对于持续时间比较长的,我们需要希望查看它的运行状态,就可以借助SQL提供 ...
- 【转载】 Sqlserver中通过Select Into语句快速单表备份
在Sqlserver数据库中,备份数据的方式有很多种,可以使用整个数据库备份,也可使用导出包含数据和架构的脚本文件的方式来进行单表或多表数据的备份,其实还有一种Select Into的方式可以快速备份 ...
- 【转载】C#常用数据库Sqlserver中DATEPART() 函数
在Sqlserver数据库中,DATEPART() 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等.DatePart()函数的语法为: DATEPART(datepart,date) ...
- 【转载】 Sqlserver中DateAdd()函数
在Sqlserver数据库中,DATEADD() 函数在日期中添加或减去指定的时间间隔.例如计算当前时间往后一天的时刻以及往前1天的时刻时间即可使用DateAdd()函数来操作,DateAdd()函数 ...
- 【转载】Sqlserver中查询窗口显示行号
在Sqlserver中编写语句的时候,有时候因为业务逻辑比较复杂,编写的语句会比较多,此时如果编辑器中显示代码的行号,则对于我们的语句编写有很好的辅助作用.sqlserver默认未开启行号显示功能,可 ...
- SqlServer中的merge操作(转载)
SqlServer中的merge操作(转载) 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有 ...
- 【转载】sqlserver中小数类型float和deciaml类型比较
在sqlserver数据库中,float类型和double类型都可以用来表示小数类型,float类型是一种近似数值的小数类型,而decimal类型则是精确数值的小数类型.如果需要在sqlserver数 ...
- 【转载】Sqlserver中使用Round函数对计算结果四舍五入
在实际应用的计算中,很多时候我们需要对最后计算结果四舍五入,其实在Sqlserver中也有对应的四舍五入函数,就是Round函数,Round函数的格式为Round(column_name,decima ...
随机推荐
- 纯css抖动效果
HTML: <button class="shake">按钮</button> CSS: .shake{ width: 120px; height: 33p ...
- 元素的class和id问题
一个元素有且只能有1个id,且全文中此id只能出现在一个元素上 一个元素不能写多次class,比如 <div class="a" class="b"& ...
- mybatis学习系列--逆向工程简单使用及mybatis原理
2逆向工程简单测试(68-70) SqlSessionFactory sqlSessionFactory=getSqlSessionFactory(); SqlSession session = sq ...
- [20171206]rman与truncate2.txt
[20171206]rman与truncate2.txt --//上午测试发现truncate的表在做rman备份时还要做8个extents的备份.--//不知道自己的猜测是否正确,选择一个使用UNI ...
- 测试中Android与IOS分别关注的点
主要从本身系统的不同点.系统造成的不同点.和注意的测试点做总结 1.自身不同点 研发商:Adroid是google公司做的手机系统,IOS是苹果公司做的手机系统 开源程度:Android是开源的,IO ...
- Python基础知识:模块
目录 JSON模块&pickle模块 requests模块 time模块 datetime模块 logging模块 os模块 sys模块 hashlib模块 re模块.正则表达式 config ...
- Matplotlib:可视化颜色命名分类和映射颜色分类
Matplotlib中支持的所有颜色分类 映射颜色分类
- 【Java学习系列】第4课--Java Web相关
本文地址 分享提纲: 1.概述 2. Jsp基础 2.1 1.概述 1.1)[来源和先导] 本文主要的java web的教程来源JSP是 菜鸟教程JSP 和 天码营Java Web. 主要的先 ...
- flush privileges 什么意思
mysql> update mysql.user set password=PASSWORD(‘新密码’) where User=’root’; mysql> flush privile ...
- 关于前缀和,A - Hamming Distance Sum
前缀和思想 Genos needs your help. He was asked to solve the following programming problem by Saitama: The ...