您现在的位置是:首页 > 文章详情文章详情
Sql 查询时候,有个别表一直显示“正在执行中...”,但是其他表都是正常的(解决死锁问题)
会飞的猪
2018-10-16
1505人已围观
简介白码驿站是一个面向开发者的知识共享社区,专注于为开发者打造一个纯净的技术交流社区(源码下载,免费在线图片压缩,jquery插件,插件下载,JS/CSS在线压缩。)-白码驿站
问题
今天在查询语句的时候,发现职位表一直显示正在查询中(表中的数据并不是很多),但是其他的表查询都是正常的
原因
问题真的是很奇怪,于是去百度,找了很久发现可能是进程阻塞造成的
解决
使用下面的语句可以轻松查询出是因为那些进程造成数据库死锁的。
DECLARE @spid INT , @bl INT; DECLARE s_cur CURSOR FOR SELECT 0 , blocked FROM ( SELECT * FROM sys.sysprocesses WHERE blocked > 0 ) a WHERE NOT EXISTS ( SELECT * FROM ( SELECT * FROM sys.sysprocesses WHERE blocked > 0 ) b WHERE a.blocked = spid ) UNION SELECT spid , blocked FROM sys.sysprocesses WHERE blocked > 0; OPEN s_cur; FETCH NEXT FROM s_cur INTO @spid, @bl; WHILE @@FETCH_STATUS = 0 BEGIN IF @spid = 0 SELECT ' 引起数据库死锁的是: ' + CAST(@bl AS VARCHAR(10)) + ' 进程号, 其执行的SQL 语法如下'; ELSE SELECT ' 进程号SPID :' + CAST(@spid AS VARCHAR(10)) + ' 被' + ' 进程号SPID :' + CAST(@bl AS VARCHAR(10)) + ' 阻塞, 其当前进程执行的SQL 语法如下'; DBCC INPUTBUFFER (@bl ); FETCH NEXT FROM s_cur INTO @spid, @bl; END; CLOSE s_cur; DEALLOCATE s_cur
然后只需要杀死阻塞进程就可以了:
kill 进程号
Tags: Sql Server
很赞哦! (0)
点击排行
文章分类
- C# (211)
- Excel操作 (7)
- Ext.Net (1)
- FTP (7)
- Git (1)
- Html (7)
- JavaScript/Jquery (173)
- Json (5)
- PhotoShop (60)
- Sql Server (48)
- SVN (5)
- Tesseract-ocr图片识别 (5)
- UML (1)
- VS代码折叠插件 (1)
- winform (2)
- 操作IP地址 (5)
- 操作PDF (5)
- 插件 (166)
- 发送邮件 (2)
- 过滤HTML标签 (2)
- 缓存 (1)
- 跨域 (1)
- 目录操作 (14)
- 软件 (25)
- 视屏操作 (2)
- 数据库恢复 (2)
- 数据库优化 (5)
- 图片操作 (16)
- 文件操作 (24)
- 序列化 (3)
- 压缩 (5)
- 验证码 (4)
- 正则表达式 (21)
- 字符串加密 (11)
猜你喜欢
- SQL Prompt 免费下载 (SQL自定义插件的安装与激活:新版)
- Tesseract-OCR 中文识别
- 大公司为什么还在采用过时的技术
- C# 操作Excel , 支持超链接 跳转Sheet 页面,HSSFHyperlink函数
- SQL SERVER 2012 误删数据恢复过程
- X-UA-Compatible 解决IE浏览器样式不兼容问题
- sql Service 海量数据查询,如何提高查询效率--数据库分区
- LoadRunner 安装+汉化+破解
- sql Service 海量数据查询,如何提高查询效率--数据库设计
- C#中构造函数的执行序列(构造函数初始化器 this base)
- html5+ajax实现文件拖拽上传
- sql Service 海量数据查询,如何提高查询效率--SQL语句优化
评 论