SQL2005查看死锁存储过程sp_who_lock
下面是我整理的监控sql server数据库,在性能测试过程中是否出现死锁、堵塞的SQL语句,还算比较准备,留下来备用。
调用方法:选中相应的数据库,执行exec sp_who_lock
USE [master] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE procedure [dbo].[sp_who_lock] as begin declare @spid int, @bl int, @intTransactionCountOnEntry int, @intRowcount int, @intCountProperties int, @intCounter int create table #tmp_lock_who ( id int identity(1,1), spid smallint, bl smallint ) IF @@ERROR<>0 RETURN @@ERROR insert into #tmp_lock_who(spid,bl) select 0 ,blocked from (select * from sysprocesses where blocked>0 ) a where not exists(select * from (select * from sysprocesses where blocked>0 ) b where a.blocked=spid) union select spid,blocked from sysprocesses where blocked>0 IF @@ERROR<>0 RETURN @@ERROR -- 找到临时表的记录数 select @intCountProperties = Count(*),@intCounter = 1 from #tmp_lock_who IF @@ERROR<>0 RETURN @@ERROR if @intCountProperties=0 select '现在没有阻塞和死锁信息' as message -- 循环开始 while @intCounter <= @intCountProperties begin -- 取第一条记录 select @spid = spid,@bl = bl from #tmp_lock_who where Id = @intCounter 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 ) end -- 循环指针下移 set @intCounter = @intCounter + 1 end drop table #tmp_lock_who return 0 end
相关推荐
-
SQL Server 2005安装配置方法图文教程 完美兼容Win7所有版本
印象中,以前电脑不发达,自身编程经历不多的时候,由于Microsoft SQL Server版本众多,在不同版本的windows下必须要求装相应版本的SQL Server,否则有可能出现兼容性的问题,装个Microsoft SQL Server总是非常费劲,装完之后用起来,由于Microsoft SQL Server还需要比较多的运行资源,玩起来卡得不要不要的,最后Microsoft SQL Server给我留下了很难用很难消化的形象. 不过现在看来,Microsoft SQL Server的S
-
详解删除SQL Server 2005 Compact Edition数据库
详解删除SQL Server 2005 Compact Edition数据库 本主题将介绍如何删除 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 数据库.由于 SQL Server Compact Edition 数据库是文件系统中的文件,因此需要通过删除文件来删除 SQL Server Compact Edition 数据库. 删除 SQL Server Compact 数据库 调用 System.
-
SQL Server 2005 Management Studio Express企业管理器将英文变成简体中文版的实现方法
看到这个文章肯定一点就是你把sql没有装到C盘里,呵呵不用怕看下面 在安装的时候要注意:在安装SQL Server 2005 Express时候需要将公共组件安装在C盘然后再安装SQL Server Management Studio Express中文版本,若将SQL Server 2005 Express时候需要将公共组件安装在其他逻辑盘上再安装SQL Server Management Studio Express时候中文版本时SQL Server Management Studio Ex
-
SQLServer 2008数据库降级到2005低版本
由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接[分离/附加]或者[备份/还原]数据库,在不同版本之间存放.往往就会遇到版本不兼容的问题.前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错: 从运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部分情况下,从低版本升级到高版本,只要不是跨度太大,如2000升级到2012,都不会怎么报错.除非使
-
Microsoft Sql server2005的安装步骤图文详解及常见问题解决方案
一:安装sql server 2005过程中出现如下问题:"选择的功能中没有任何功能可以安装或升级": 解决方案:Microsoft SQL Server 2005→配置工具→SQL配置管理器→SQL Server 2005服务→右边的两个服务启动SQL Server FullTest Search() 和服务SQl Sever(计算机名) 二:无法将数CLSID写入\Software\Classes\PROTOCOLS\Handler\ms-help. 解决办法:退出电脑安全软件 三
-
SQL Server 2005 中使用 Try Catch 处理异常
TRY...CATCH是Sql Server 2005/2008令人印象深刻的新特性.提高了开发人员异常处理能力.没有理由不尝试一下Try.. Catch功能. * TRY 块 - 包含可能产生异常的代码或脚本 * CATCH 块 - 如果TRY块出现异常,代码处理流将被路由到CATCH块.在这里你可以处理异常,记录日志等. Sql Server中的Try Catch和C#,JAVA等语言的处理方式一脉相承.这种一致性才是最大的创新之处. 一.SQL SERVER 2000中异常处理 CREAT
-
SQL Server 2005附加数据库时Read-Only错误的解决方案
SQL Server 2005附加数据库文件时出现了Read-Only错误,附加的时候,系统提示mdf文件为只读,可是打开文件属性,这个属性不为只读.该怎么解决呢?本文我们就介绍了这一解决方案,接下来就让我们来一起了解一下吧. 两种解决方法如下: 1.重新打开数据库软件,在登录认证框那里选择:Windows authentication进行登录.然后再附加数据库,这时附加的就没有Read-Only了. 2.在*.mdf文件的属性里,找到"安全"页,然后把里面所有的"组或用户名
-
SQL2005查看死锁存储过程sp_who_lock
下面是我整理的监控sql server数据库,在性能测试过程中是否出现死锁.堵塞的SQL语句,还算比较准备,留下来备用. 调用方法:选中相应的数据库,执行exec sp_who_lock USE [master] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE procedure [dbo].[sp_who_lock] as begin declare @spid int, @bl int, @intTransactionCo
-
mysql查看死锁与去除死锁示例详解
1.查询进程 show processlist 2. 查询到相对应的进程,然后 kill id 验证(kill后再看是否还有锁) 2.查询是否锁表 show OPEN TABLES where In_use > 0; 示例: 新建一个会话执行如下的显示锁示例 LOCK TABLES account_data.account READ; SELECT SLEEP(160); UNLOCK TABLES account_data.account; 另开启一个会话检查锁表情况: mysql> sho
-
Mysql查看死锁与解除死锁的深入讲解
前言 前段时间遇到了一个Mysql 死锁相关的问题,整理一下. 问题描述:Mysql 的修改语句似乎都没有生效,同时使用Mysql GUI 工具编辑字段的值时会弹出异常. 什么是死锁 在解决Mysql 死锁的问题之前,还是先来了解一下什么是死锁. 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等的进程称为死锁进程. 死锁的表现 死锁的具体表现有两种: Mysql 增改语句无
-
oracle数据库中查看系统存储过程的方法
复制代码 代码如下: select line,text from dba_source where name='PRO_E_F_ORDER_STAT'; select object_name,object_type from dba_objects where object_type='PROCEDURE';
-
如何实现只授予用户查看存储过程定义的权限
有个网友问我,如何授予某个用户只能查看某些存储过程的定义权限,而不能让用户去修改.执行存储过程.看似简单的问题,却因为从没有碰到这样的需求.花了点时间才梳理.总结清楚. 关于ORACLE账号的权限问题,一般分为两种权限: 系统权限: 允许用户执行特定的数据库动作,如创建表.创建索引.创建存储过程等 对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列.执行存储过程等 像这种查看存储过程定义的权限为对象权限,但是我们还是首先来看看关于存储过程的系统权限吧: PRIVILEGE NAME
-
sql server 2000阻塞和死锁问题的查看与解决方法
数据库发生阻塞和死锁的现象: 一.数据库阻塞的现象:第一个连接占有资源没有释放,而第二个连接需要获取这个资源.如果第一个连接没有提交或者回滚,第二个连接会一直等待下去,直到第一个连接释放该资源为止.对于阻塞,数据库无法处理,所以对数据库操作要及时地提交或者回滚.二.数据库死锁的现象:第一个连接占有资源没有释放,准备获取第二个连接所占用的资源,而第二个连接占有资源没有释放,准备获取第一个连接所占用的资源.这种互相占有对方需要获取的资源的现象叫做死锁.对于死锁,数据库处理方法:牺牲一个连接,保证另外
-
一个查看MSSQLServer数据库空间使用情况的存储过程 SpaceUsed
运行下面存储过程 然后直接使用 SpaceUsed 就可以查看了. 存储过程代码 程序代码 复制代码 代码如下: Create procedure SpaceUsed as begin declare @id int -- The object id of @objname. declare @type character(2) -- The object type. declare @pages int
-
sql server中死锁排查的全过程分享
前言 记得以前客户在使用软件时,有偶发出现死锁问题,因为发生的时间不确定,不好做问题的重现,当时解决问题有点棘手了. 死锁的四个必要条件: 互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用. 请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源. 非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺. 循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻
-
sql server排查死锁优化性能
一.概述 记得以前客户在使用软件时,有偶发出现死锁问题,因为发生的时间不确定,不好做问题的重现,当时解决问题有点棘手了.现总结下查看死锁的常用二种方式. 1.1 第一种是图形化监听: sqlserver -->工具--> sql server profiler 登录后在跟踪属性中选择如下图: 监听到的死锁图形如下图 这里的描述大致是:有二个进程 一个进程ID是96, 另一个ID是348. 系统自动kill 掉了进程ID:96,保留了进程ID:348 的事务Commit. 上面死锁是由于批量更新
-
mysql心得分享:存储过程
use test; drop table if exists t8; CREATE TABLE t8(s1 INT,PRIMARY KEY(s1)); drop procedure if exists handlerdemo; DELIMITER $$ CREATE PROCEDURE handlerdemo() BEGIN declare xx int default 4; DECLARE oh_no condition for sqlstate '23000'; #DECLARE CONTI
随机推荐
- vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
- 获取ashx得到的内容(已处理好的数据)
- JS中JSON对象和String之间的互转及处理技巧
- Lua中的操作符和表达式总结
- 内存型数据库Redis持久化小结
- CentOS6.9+Mysql5.7.18源码安装详细教程
- java sqlserver text 类型字段读取方法
- 详解iOS的深浅拷贝
- VBScript ASP CDbl() 函数转换为双精度类型
- C#基础之泛型委托实例教程
- PHP base64编码后解码乱码的解决办法
- AJAX跨域请求JSONP获取JSON数据的实例代码
- 浅析JavaScript中的常用算法与函数
- Lua中的函数知识总结
- linux时间同步ntp服务的安装与配置
- C++利用MySQL API连接和操作数据库实例详解
- Laravel中间件实现原理详解
- DevExpress实现自定义GridControl中按钮文字内容的方法
- Webpack框架核心概念(知识点整理)
- jQuery进阶实践之利用最优雅的方式如何写ajax请求