SQL SERVER 事务与锁相关DMV、设置和命令
与执行相关的DMV:
连接:sys.dm_exec_connections 返回与 SQL Server 实例建立的连接有关的信息以及每个连接的详细信息
会话:sys.dm_exec_sessions 针对 SQL Server 上的每个经过身份验证的会话返回一行。
请求:sys.dm_exec_requests 返回有关在 SQL Server 中执行的每个请求的信息
sys.dm_exec_sql_text 返回由指定的 sql_handle 标识的 SQL 批处理的文本
注:
一般情况下, Connection就可以看做Session. 一个connection对应多个session的情况非常少见.
一个Session中可以有多个request, 比如说一个查询语句, 一次存储过程的调用都是request.
参考:https://www.cnblogs.com/awpatp/archive/2010/12/20/1911448.html
与事务相关DMV:
sys.dm_tran_locks: 返回有关当前活动的锁管理器资源的信息。向锁管理器发出的已授予锁或正等待授予锁的每个当前活动请求分别对应一行。
set lock_timeout 5000 设置会话锁超时期限为5000毫秒
kill @spid 结束进程@spid
设置事务的隔离级别:
SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED --默认值 | REPEATABLE READ | SNAPSHOT | SERIALIZABLE }
或者在查询中使用表提示来设置隔离级别:
select * from <table> with (<isolationname>) --表提示中的隔离级别的名称不需要空格
举例:
查询指定连接最后调用的批处理代码:
select c.session_id,t.text from sys.dm_exec_connections c cross apply sys.dm_exec_sql_text(c.most_recent_sql_handle) as t where c.session_id = @@SPID --@@SPID代表当前会话
或者:
dbcc inputbuffer(53) --查询spid = 53 的最后一个语句