SQL SERVER 查询死锁

方法一:

WITH    CTE_SID ( BSID, SID, sql_handle )

AS ( SELECT   blocking_session_id ,

session_id ,

sql_handle

FROM     sys.dm_exec_requests

WHERE    blocking_session_id <> 0

UNION ALL

SELECT   A.blocking_session_id ,

A.session_id ,

A.sql_handle

FROM     sys.dm_exec_requests A

JOIN CTE_SID B ON A.session_id = B.BSID

)

SELECT  C.BSID ,

C.SID ,

S.login_name ,

S.host_name ,

S.status ,

S.cpu_time ,

S.memory_usage ,

S.last_request_start_time ,

S.last_request_end_time ,

S.logical_reads ,

S.row_count ,

Q.text

FROM    CTE_SID C

JOIN sys.dm_exec_sessions S ON C.SID = S.session_id

CROSS APPLY sys.dm_exec_sql_text(C.sql_handle) Q

ORDER BY SID;

方法二:

USE master;

GO

DECLARE @spid INT ,

@bl INT;

DECLARE s_cur CURSOR

FOR

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;

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;

时间: 2024-11-10 23:09:22

SQL SERVER 查询死锁的相关文章

SQL server下死锁问题

这几天在做一个项目,以前都没怎么搞过多线程,现在开始,只有边学边做了. 一开始的时候,程序报错是,是提示发生死锁,刚开始,自己没什么经验,以为是程序代码的死锁,就用lock代码,把程序给锁起来了,运行程序后,发现有超时现象,查阅资料,后来断定,这个问题是死锁是发生是SQL server上的,特地找了下SQL2008的书,看了下,死锁的解释. 共享锁 排他锁 更新锁 自定义锁 然后查了资料, 查询SQL死锁的 存储过程 create procedure sp_who_lock   as   beg

用SQL Server查询所有数据并显示

利用SQL Server查询数据,并把所有数据显示在页面上. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@page import="jdbc.sqlServer"%> <%@page import="java.sql.Connection"%> <%@page imp

SQL Server 查询锁表和接锁表

SQL Server 查询锁表 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) as tableName ,* from sys.dm_tran_locks where resource_type='OBJECT' and OBJECT_NAME(resource_associated_entity_id) is not null SQL Server 解锁表 declare @spid int

使用WinDbg调试SQL Server查询

上一篇文章我给你介绍了WinDbg的入门,还有你如何能附加到SQL Server.今天的文章,我们继续往前一步,我会向你展示使用WinDbg调试SQL Server查询需要的步骤.听起来很有意思?我们开始吧! 假设在你面前有个简单的查询,你想在WinDbg里调试那个特定的查询.听起来很简单,但一旦你开始考虑这个问题,就会碰到很多问题: 在我特定执行的查询上,我如何标识出正确的工作者线程? 在sqlservr.exe里,我应该在哪里设置断点? 我们来具体讲解下这2个问题. 标识出正确的工作者线程

SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用

原文:SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用 近段时间以来,一直在探究SQL Server查询性能的问题,当然也漫无目的的查找了很多资料,也从网上的大神们的文章中学到了很多,在这里,向各位大神致敬.正是受大神们无私奉献精神的影响,所以小弟也作为回报,分享一下关于SET STATISTICS IO和SET STATISTICS TIME这两条T_SQL命令,在查询优化性能中的作用. 首先我想说明一下这篇文章不是关于如何

如何找出你性能最差的SQL Server查询

原文:如何找出你性能最差的SQL Server查询 我经常会被反复问到这样的问题:”我有一个性能很差的SQL Server.我如何找出最差性能的查询?“.因此在今天的文章里一些让你很容易找到问题答案的信息和向导. 问SQL Server! SQL Server的一个优点是它本身能回答几乎所有你的问题,因为SQL Server在各个DMV和DMF里存储了很多故障排除信息.另一方面这也是个缺点,因为你必须知道各个DMV/DMF,还有如何把它们解释和关联在一起. 至于你的最差性能SQL Server查

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何在SQL Server存储过程中获取另一存储过程的执行结果记录集?如何在存储过程中检索动态SQL语句的执行结果?如何实现类似SELECT * FROM (EXEC procedure_name @parameters_var) AS datasource ... 的功能?procedure_

SQL Server查询中特殊字符的处理方法

SQL Server查询中,经常会遇到一些特殊字符,比如单引号"'"等,这些字符的处理方法,是SQL Server用户都应该需要知道的. 我们都知道SQL Server查询过程中,单引号"'"是特殊字符,所以在SQL Server查询的时候要转换成双单引号"''".但这只是特殊字符的一个,在实际项目中,发现对于like操作还有以下特殊字符:下划线"_",百分号"%",方括号"[]"以及尖

sql server 查询数据库所有的表名+字段

原文:sql server 查询数据库所有的表名+字段 SELECT * FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME='Account' SELECT    (case when a.colorder=1 then d.name else '' end) as 表名,--如果表名相同就返回空       a.colorder as 字段序号,       a.name as 字段名,       (case when COLUMNPROPER