[SQL Server]查询某个SPID,session_id对应的执行sql.

 

 

select er.session_id, CAST(csql.text AS varchar(255)) AS CallingSQL

from master.sys.dm_exec_requests er WITH (NOLOCK)

       CROSS APPLY fn_get_sql (er.sql_handle) csql

where er.session_id =309

 

 

 session_id即为spid

 

select * from sys.dm_exec_sessions where session_id in (102,315);

 

exec   sp_who 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SQL Server 中,可以通过以下步骤来检测和解决死锁: 1. 打开 SQL Server Management Studio,连接到目标数据库。 2. 在“工具”菜单中选择“SQL Server Profiler”。 3. 在“模板”中选择“标准”或“TSQL_Duration”。 4. 在“事件选择”选项卡中选择“Locks”和“Deadlock Graph”事件。 5. 在“事件过滤器”选项卡中,根据需要设置过滤器,以限制要监视的事件类型和对象。 6. 单击“运行”按钮开始监视。 7. 如果发生死锁,Profiler 将捕获并显示死锁图形。 8. 根据死锁图形中的信息,确定哪些 SQL 语句造成了死锁,然后对这些语句进行优化或重构。 9. 可以使用 SQL Server 提供的其他工具,如“活动监视器”和“系统动态管理视图”,来进一步分析和解决死锁问题。 除了以上提到的方法,还可以通过查询系统动态管理视图来检测死锁: SELECT db.name AS dbname, TL.resource_type AS restype, TL.resource_database_id AS dbid, TL.resource_associated_entity_id AS resid, TL.request_mode AS reqmode, TL.request_session_id AS sid, WT.blocking_session_id AS blockingid, H.TEXT AS sqltext FROM sys.dm_tran_locks AS TL INNER JOIN sys.databases AS db ON db.database_id = TL.resource_database_id INNER JOIN sys.dm_os_waiting_tasks AS WT ON TL.lock_owner_address = WT.resource_address INNER JOIN sys.dm_exec_sessions AS S ON WT.session_id = S.session_id CROSS APPLY sys.dm_exec_sql_text(WT.sql_handle) AS H WHERE TL.request_session_id = @@SPID AND TL.resource_type <> 'DATABASE' AND WT.blocking_session_id <> 0; 以上查询可用于检测当前会话中是否有死锁,并显示死锁所涉及的数据库、资源类型、请求模式、会话 ID、阻塞会话 IDSQL 文本等信息。根据这些信息,可以进一步分析和解决死锁问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值