通过 sysprocesses 简单查询死锁及解决死锁办法
简单查询死锁,如下四步可以轻松解决:
第一步:查询死锁语句
1: 条件是 blocked <> 0
select dbid,* from sys.sysprocesses
where 1=1
and spid >50
and blocked <> 0
--and spid= 62
查询结果如下图所示:
以上查询得出:
- 受影响的数据库ID 是 5;
- 受到阻塞的会话有1301、1306、869、109;
- 阻塞会话是961;
第二步:查询发生阻塞或死锁的当前数据库
1:通过第一步查询,知道数据库ID 为 DBID=5。
2:sp_helpdb 或 Select name,dbid from master.sys.sysdatabases 查询数据库名称
第三步:查询发生阻塞或死锁的SQL语句
输出死锁的执行的语句:
dbcc inputbuffer(961)
语句如下:
select o.tp_Login,o.tp_Title, CONVERT(varchar(10),a.TimeCreated,120) as accessingdate,count(*) as docnum, 'sps' as type from UserData u,AllDocs a, userinfo o ,webs w where a.ListId = u.tp_ListId and a.Id = u.tp_docID and w.Id = a.WebId and w.SiteId = a.SiteId and w.SiteId = o.tp_SiteID and..........以后省去
第四步:杀死锁
kill 961
之后再从第一步进行查询,看是否还存在死锁;
从第二步、第三步,查询出了出问题的锁死数据库及SQL语句,便于分析彻底解决死锁问题。
以下是sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息。这些进程可以是客户端进程或系统进程。sysprocesses 只存储在master 数据库中。
| 列名 | 数据类型 | 描述 |
|---|---|---|
| spid | smallint | SQL Server 进程 ID。 |
| kpid | smallint | Microsoft Windows NT 4.0® 线程 ID。 |
| blocked | smallint | 分块进程的进程 ID (spid)。 |
| waittype | binary(2) | 保留。 |
| waittime | int | 当前等待时间(以毫秒为单位)。当进程不处于等待时,为 0。 |
| lastwaittype | nchar(32) | 表示上次或当前等待类型名称的字符串。 |
| waitresource | nchar(32) | 锁资源的文本化表示法。 |
| dbid | smallint | 当前正由进程使用的数据库 ID。 |
| uid | smallint | 执行命令的用户 ID。 |
| cpu | int | 进程的累计 CPU 时间。无论 SET STATISTICS TIME ON 选项是 ON 还是 OFF,都为所有进程更新该条目。 |
| physical_io | int | 进程的累计磁盘读取和写入。 |
| memusage | int | 当前分配给该进程的过程高速缓存中的页数。一个负数,表示进程正在释放由另一个进程分配的内存。 |
| login_time | datetime | 客户端进程登录到服务器的时间。对于系统进程,是存储 SQL Server 启动发生的时间。 |
| last_batch | datetime | 客户端进程上次执行远程存储过程调用或 EXECUTE 语句的时间。对于系统进程,是存储 SQL Server 启动发生的时间。 |
| ecid | smallint | 用于唯一标识代表单个进程进行操作的子线程的执行上下文 ID。 |
| open_tran | smallint | 进程的打开事务数。 |
| status | nchar(30) | 进程 ID 状态(如运行、休眠等)。 |
| sid | binary(85) | 用户的全局唯一标识符 (GUID)。 |
| hostname | nchar(128) | 工作站的名称。 |
| program_name | nchar(128) | 应用程序的名称。 |
| hostprocess | nchar(8) | 工作站进程 ID 号。 |
| cmd | nchar(16) | 当前正在执行的命令。 |
| nt_domain | nchar(128) | 客户端的 Windows NT 4.0 域(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 域。 |
| nt_username | nchar(128) | 进程的 Windows NT 4.0用户名(如果使用 Windows 身份验证)或信任连接的 Windows NT 4.0 用户名。 |
| net_address | nchar(12) | 指派给每个用户工作站上的网络接口卡唯一标识符。当用户登录时,该标识符插入 net_address 列。 |
| net_library | nchar(12) | 用于存储客户端网络库的列。每个客户端进程都在网络连接上进入。网络连接有一个与这些进程关联的网络库,该网络库使得这些进程可以建立连接。有关更多信息,请参见客户端和服务器 Net-Library。 |
| loginame | nchar(128) | 登录名。 |
通过 sysprocesses 简单查询死锁及解决死锁办法的更多相关文章
- SQL Server中解决死锁
SQL Server中解决死锁的新方法介绍 数据库操作的死锁是不可避免的,本文并不打算讨论死锁如何产生,重点在于解决死锁,通过SQL Server 2005, 现在似乎有了一种新的解决办法. 将下面的 ...
- SQL Server中解决死锁的新方法介绍
SQL Server中解决死锁的新方法介绍 数据库操作的死锁是不可避免的,本文并不打算讨论死锁如何产生,重点在于解决死锁,通过SQL Server 2005, 现在似乎有了一种新的解决办法. 将下面的 ...
- SQLServer查看和解决死锁的方法
http://luohonghong.blog.163.com/blog/static/78312058201142411533316/ SQLServer查看和解决死锁的方法 2011-05-24 ...
- 解决死锁之路3 - 常见 SQL 语句的加锁分析 (转)
出处:https://www.aneasystone.com/archives/2017/12/solving-dead-locks-three.html 这篇博客将对一些常见的 SQL 语句进行加锁 ...
- 巧用MySQL InnoDB引擎锁机制解决死锁问题(转)
该文会通过一个实际例子中的死锁问题的解决过程,进一步解释innodb的行锁机制 最近,在项目开发过程中,碰到了数据库死锁问题,在解决问题的过程中,笔者对MySQL InnoDB引擎锁机制的理解逐步加深 ...
- SqlServer表死锁的解决方法
SqlServer表死锁的解决方法 前些天写一个存储过程,存储过程中使用了事务,后来我把一些代码注释掉来进行调试找错,突然发现一张表被锁住了,原来是创建事务的代码忘记注释掉.本文表锁住了的解决方法 ...
- SQL SERVER中的两种常见死锁及解决思路
在sql server中,死锁都与一种锁有关,那就是排它锁(x锁).由于在同一时间对同一个数据库资源只能有一个数据库进程可以拥有排它锁.因此,一旦多个进程都需要获取某个或者同一个数据库资源的排它访问权 ...
- Windows下MFC程序利用LockCop解决死锁
死锁现象:在训练的时候,点击“终止”按钮时不时会发生死锁. 检测工具:LockCop.TRACE宏.::GetCurrentThreadID函数. 检测手段: 总结起来就是—— 第一步:用LockCo ...
- Java如何使用线程解决死锁?
在Java编程中,如何使用线程解决死锁? 以下示例演示如何使用线程的概念解决死锁问题. // from W w w .Y I I b AI.c o M package com.yiibai; impo ...
随机推荐
- servlet 高级知识之Listener
Listener,顾名思义,监听器.它可以监听客户端的请求.服务端的操作等. 通过监听器,可以自动激发一些操作,比如监听在线的用户的数量.当增加一个HttpSession时,就激发sessionCre ...
- php服务器---IIS一些问题
配置网上很多博客都介绍过..这里不作详细说明了..将PHP目录(D:\PHP\PHP)下的php.ini-recommended或者php.ini-dist改名为php.ini,并找到extensio ...
- 【搜索】 Prime Path
#include<cstdio> #include<cstring> #include<cmath> #include<queue> #include& ...
- [C#.net]WinForm载入窗体完成后自动执行事件
一.以下是网络上可搜索到的次序 当 Windows Form 应用程序启动时,会以下列顺序引发主要表单的启动事件: System.Windows.Forms.Control.Handle ...
- Servlet 知识点 中文乱码的本质与解决
本质原因:在servlet中出现中文乱码的原因编码和解码采用的不是一个编码表或者两个编码表不是兼容 例如UTF-8编码.GBK编码都可以读取中文,那么如果采用UTF-8编码保存文件,但是采用GBK编码 ...
- python学习 day09 (3月14日)----函数
一.函数的进阶 1.1 动态参数 1.2* ** 1.3*args , **kwargs 1.4 函数的注释 1.5名称空间 1.6函数的嵌套全局变量 : 贴边写的局部变量 : 不是贴边写的. ''' ...
- Pappus一阶矩公式
- Spring boot自动设置包依赖,根本不用记,
maven有和多依赖包,每次搭建都很麻烦,其实IDE ,有个小技巧,就是如图所示,你给需要的技术,加入进去,自动就会生成包和相关依赖,根本无需自己配置
- MySQL库中表名忽略大小写设置的影响
前不久,对mysql的lower_case_table_names参数有点小小的疑问: 1.lower_case_table_names是表名忽略大小写还是所有对象(字段.索引等)都忽略大小写? 2. ...
- Win7 IIS 部署站点遇到的问题 如 HTTP 错误 404.XX
HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面. 解决办法:设置为允许-面相 =============== ...