select * from sys.sysprocesses

MSDN:包含正在 SQL Server 实例上运行的进程的相关信息。这些进程可以是客户端进程或系统进程。

视图中主要的字段:
1.
Spid:Sql Servr 会话ID
2. Kpid:Windows 线程ID
3. Blocked:正在阻塞求情的会话 ID。如果此列为
Null,则标识请求未被阻塞
4. Waittype:当前连接的等待资源编号,标示是否等待资源,0 或 Null表示不需要等待任何资源
5.
Waittime:当前等待时间,单位为毫秒,0 表示没有等待
6. DBID:当前正由进程使用的数据库ID
7. UID:执行命令的用户ID

8. Login_time:客户端进程登录到服务器的时间。
9.
Last_batch:上次执行存储过程或Execute语句的时间。对于系统进程,将存储Sql Server 的启动时间

10.Open_tran:进程的打开事务个数。如果有嵌套事务,就会大于1
11.Status:进程ID 状态,dormant = 正在重置回话
; running = 回话正在运行一个或多个批处理 ; background = 回话正在运行一个后台任务 ; rollback = 会话正在处理事务回滚 ;
pending = 回话正在等待工作现成变为可用 ; runnable = 会话中的任务在等待获取 Scheduler 来运行的可执行队列中 ;
spinloop = 会话中的任务正在等待自旋锁变为可用 ; suspended = 会话正在等待事件完成

12.Hostname:建立链接的客户端工作站的名称
13.Program_name:应用程序的名称,就是 连接字符串中配的
Application Name
14.Hostprocess:建立连接的应用程序在客户端工作站里的进程ID号
15.Cmd:当前正在执行的命令

16.Loginame:登录名

应用实例:

1. 检查数据库是否发生阻塞

先查找哪个链接的
blocked 字段不为0。如 SPID53的blocked 字段不为0,而是 52。SPID 52 的 blocked
为0,就可以得出结论:此时有阻塞发生,53 被 52 阻塞住了。如果你发现一个连接的 blocked
字段的值等于它自己,那说明这个连接正在做磁盘读写,它要等自己的 I/O 做完。

2. 查找链接在那个数据库上

检查 dbid
即可。得到 dbid,可以运行以下查询得到数据库的名字:
Select name,dbid from master.sys.sysdatabases

时间: 2024-10-01 05:44:57

select * from sys.sysprocesses的相关文章

数据库问题5-SYS.SYSPROCESSES使用和查找死锁

http://blog.sina.com.cn/s/blog_62c4727d0100jc5z.html (一)理論部份 sys.sysprocesses (Transact-SQL) http://technet.microsoft.com/zh-tw/library/ms179881.aspx 包含在 SQL Server 執行個體上執行之處理序的相關資訊.這些處理序可以是用戶端處理序或系統處理序.若要存取 sysprocesses,您必須在 master 資料庫內容中,或者,您必須使用 m

通过sys.sysprocesses查询线程来源

SELECT hostname,loginame,* FROM sys.sysprocesses; SELECT count(*),hostname FROM sys.sysprocesses where cmd='AWAITING COMMAND' group by hostname; SELECT count(*),hostname,loginame FROM sys.sysprocesses where cmd='AWAITING COMMAND' group by hostname,lo

master.sys.sysprocesses相关内容

sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息.这些进程可以是客户端进程或系统进程. sysprocesses 只存储在 master 数据库中,是一张视图. Select * From master.sys.sysprocesses 一.使用sysprocesses查询当前系统被阻塞的会话 字段Blocked<>0代表当前的SQL Server会话ID被锁定,锁定当前会话ID的SQL Server会话ID就是Blocked中的值.

sys.sysprocesses视图的使用小结

Sys.SysProcesses 系统表是一个很重要的系统视图,主要用来定位与解决Sql Server的阻塞和死锁包含正在 SQL Server 实例上运行的进程的相关信息.这些进程可以是客户端进程或系统进程. 视图中主要的字段: 1. Spid:Sql Servr 会话ID 2. Kpid:Windows 线程ID 3. Blocked:正在阻塞求情的会话 ID.如果此列为 Null,则标识请求未被阻塞 4. Waittype:当前连接的等待资源编号,标示是否等待资源,0 或 Null表示不需

SqlServer定时备份数据库和定时杀死数据库死锁解决

PS:Sqlserver 2008 R2,windows 8 64位 1.备份数据库 因为要备份,我们就要用到Sqlserver的代理,默认数据库的代理是不开启的.需要我们手动开启的. 执行备份数据库脚本,现在将脚本公布,其实将这一段代码中需要保存的文件路径和数据库名称替换一下就可以实现备份了.但是还没有达到定时备份的目的 ? 1 2 3 4 5 6 7 8 9 10 11 --自动备份并保存最近5天的SQL数据库作业脚本 宋彪 20130310 DECLARE @filename VARCHA

SQL Server 断开某个数据库所有连接(还原的时候需要)

问题描述: SQL Server数据库备份还原后,在数据库名称后会出现"受限制访问"字样 解决办法: 右键点击数据库 -> 属性 -> 选项 -> 状态 -> 限制访问 -> 选择Multiple -> 确定. 问题描述: 在对SQL Server数据库进行还原时,提示:System.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库的独占访问权.(Microsoft.SqlServer.Smo).出现此问题的原

SQL语句导致cpu占用如此高

一般我们可以使用sql server自带的性能分析追踪工具sql profiler分析数据库设计所产生问题的来源,进行有针对性的处理.但我们也可以通过自己写SQL语句来有针对性的进行性能方面的查询.通常会用到如下三个系统视图:sys.sysprocesses ,dm_exec_sessions ,dm_exec_requests --一.查看当前的数据库用户连接有多少USE master GOSELECT *FROM sys.[sysprocesses]WHERE [spid] > 50--AN

SQLSERVER排查CPU占用高的情况

SQLSERVER排查CPU占用高的情况 今天中午,有朋友叫我帮他看一下数据库,操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高的,他说服务器运行的是金蝶K3软件,数据库实例里有多个数据库 他说是这几天才出现的,而且在每天的某一个时间段才会出现CPU占用高的情况 内存占用也很高,占用了30个G -----------------------------------------------华丽的分割线-------------

SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

问题: 经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了.人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题. 遇到这种情况,一般都是没有做备份,不然也不会来发问了.首先要冷静,否则会有更大的灾难.直到你放弃. 解决方法: 对于这类问题,主要是找回误操作之前的数据,在2008之前,有个很出名的工具Log Exploer,听说还挺好用的,这个网上大把教程,这里就不多说了.但是唯一遗憾的是,不支持2008及更高版本,这