请问 SQL Server 如何查询 Lock 时,是被哪个 SQL, IP 给锁住?

1 天前
 littlemis

请问 SQL Server 如何查询 Lock 时,是被哪个 SQL, IP 给锁住? 举例查询 select * from order where date between '2024-10-01' and '2024-10-15' Lock 了 能查到是 192.168.1.26 IP 更新 SQL update order set check_status = 'Y' between '2024-10-01' and '2024-10-02'

582 次点击
所在节点    问与答
6 条回复
VDarker
1 天前
sql server 那个官方的管理软件就可以看
quan01994
1 天前
USE master
GO
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT es.session_id, es.login_name, es.host_name, est.text
, cn.last_read, cn.last_write, es.program_name
FROM sys.dm_exec_sessions es
INNER JOIN sys.dm_tran_session_transactions st --系统里还存在的事务
ON es.session_id = st.session_id
INNER JOIN sys.dm_exec_connections cn
ON es.session_id = cn.session_id
CROSS APPLY sys.dm_exec_sql_text(cn.most_recent_sql_handle) est
LEFT OUTER JOIN sys.dm_exec_requests er
ON st.session_id = er.session_id
AND er.session_id IS NULL

这个可以查询当时还未提交的事务 。
quan01994
1 天前
ip 的话 ,很难查到,除非你的 sql 注释里带了 iP
quan01994
1 天前
或者可以区分 ,loginname, 每台机器 不同的 loginname. 这个是可以区分的 .
littlemis
1 天前
@quan01994 明白了! 在 lock 错误时查询此表格新增到某个文件下
littlemis
1 天前
@quan01994 谢谢您,我用 loginname=ip 来区分!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1099799

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX