关闭

SQL server 中如何查询阻塞

标签: sql server存储并发事务
768人阅读 评论(0) 收藏 举报
分类:

SQL server 中如何查询阻塞

详细内容请参阅:T-SQL2008技术内幕:T-SQL语言基础事务和并发


1:新建3 个查询窗口:connection1, connection2和connection3。

2:connection1中输入 :

BEGIN TRAN
    UPDATE Production.Products
    SET unitprice = unitprice + 1.00
    WHERE productid = 2

connection2中输入:

SELECT productid,unitprice
FROM Production.Products
WHERE productid = 2

connection3中输入:

SELECT
    request_session_id AS spid,
    resource_type as restype,
    resource_database_id as dbid,
    DB_NAME(resource_database_id) as dbname,
    resource_description as res,
    resource_associated_entity_id as resid,
    request_mode as mode,
    request_status as status

FROM sys.dm_tran_locks

具体信息

A:被锁定的资源类型(例如,取值之一的KEY代表索引中的行锁)

B:被锁定资源所位于的数据库ID,可以用DB_NAME函数把这个ID转换成相应的数据库名称

C:资源说明与资源相关的实体ID

D:锁模式

E:已经授予了锁,还是会话正在请求授予锁

此时,我们已经获得了阻塞链中获得进程的ID信息,如果我们想要获得其他详细信息(读取信息和二进制标志),我们好需要执行下面的语句

select
    session_id as spid,
    connect_time,
    last_read,
    last_write,
    most_recent_sql_handle
from sys.dm_exec_connections
where session_id in (61,56)  --(61,56)是阻塞进程中涉及 的ID ,你也可以根据你的实际情况编写SQL语句

具体信息

A:连接建立的时间

B:连接中最后一次发生读操作和写操作的时间

C:一个二进制标记(handle),用于代表此连接上执行的最后一个SQL批处理。可以把这个标记值作为输入参数提供给函数sys,dm_exec_sql_text,由这个函数,由这个函数

返回该标记值代表的SQL代码。


如果我们想要反过来查看批处理命令

select session_id,text
from sys.dm_exec_connections
    cross apply sys.dm_exec_sql_text(most_recent_sql_handle) as ST
    where session_id in(56,61)

以上显示了被阻塞进程(61)正在等待执行的代码,因为这是该进程最后执行的一个操作,对于阻塞进程来说,通过这个例子能够看出是那条语句导致了问题,

但是要记住,阻塞进程可能在不断运行,所以在代码中看到的最后一个操作部一定就是导致问题的语句。


对于阻塞状态中涉及到的会话,用动态管理视图sys.dm_exec_sessions也能找到很多有用的信息。

详细信息:

A:建立会话的时间(login_time),

B:特定于工作会话的客户端工作站名称(host_name)

C:初始化会话的客户端程序的名称(program_name)

D:会话所使用的SQL server登录名(login_name)

E:客户端的Windows名(nt_user_name)

F:最近一次会话请求的开始时间(last_request_start_time)

G:最近一次会话请求的完成时间(last_request_end_time)

从这些信息中可以很容易地识别出阻塞链涉及到的会话,争用的资源,被阻塞会话等待了多长时间(以毫秒为单位)等信息


设定超时期限和取消设定超时期限

最后引起事务回滚,撤销更新操作

KILL 61





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1507次
    • 积分:29
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档