大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说sql server查询链接数据库_sqlserver查询死锁,希望您对编程的造诣更进一步.
在SQL Server中有几种方法可以找到活动的 SQL 连接。让我们看看一些使用 T-SQL 查询的简单快捷的方法。
SP_WHO
SP_WHO
是 SQL Server 内置的系统存储过程, 其他方法相比,SP_WHO
将具有最少的列,但是一种快速列出活动连接的方法。
以下是在 SQL Server Management Studio 中的执行示例:
EXEC SP_WHO
具体的字段解释请参阅官方文档 SP_WHO
其中比较重要的列是:
- spid: 会话ID
- loginname: 登录账号
- blk: 阻塞进程的会话ID(如果存在)。否则,此列为零, 可以使用该列排查死锁
SYS.SYSPROCESSES
另一种查找活动 SQL 连接的绝妙方法是使用系统兼容性视图 SYS.SYSPROCESSES
此视图有很多列,其中包含很多信息,这些信息有助于您找出活动的 sql 连接,尤其是当您想要查找被阻塞的进程时。但是,这是向后兼容的视图,不建议使用,因为未来的版本可能会删除它
以下是在 SQL Server Management Studio 中的执行示例:
SELECT * FROM SYS.SYSPROCESSES
具体的字段解释请参阅官方文档 SYS.SYSPROCESSES
SYS.DM_EXEC_SESSIONS (建议使用)
SYS.DM_EXEC_SESSIONS
是替代旧系统表 sysprocesses
的动态管理视图之一。SYS.DM_EXEC_SESSIONS
的优点是它的列 is_user_process
。使用此列,您可以轻松过滤掉系统进程。
以下是在 SQL Server Management Studio 中的执行示例:
SELECT * FROM SYS.DM_EXEC_SESSIONS where is_user_process = 1
具体的字段解释请参阅官方文档 SYS.DM_EXEC_SESSIONS
用于查找 SQL Server 中的死锁的 T-SQL 查询
下面是我用来快速查找死锁的查询。此语句基于SYS.DM_EXEC_REQUESTS
动态管理视图。在此语句中,blocking_session_id
列为您提供了阻塞连接的 session_id,而 wait_type
列为您提供了导致 deadlock 的 等待类型。获得blocking_session_id
后,您可以使用 SYS.DM_EXEC_SESSIONS
来获取有关会话或连接的更多详细信息。
SELECT
session_id,
start_time,
[status],
command,
blocking_session_id,
wait_type,
wait_time,
open_transaction_count,
transaction_id,
total_elapsed_time,
Definition = CAST(text AS VARCHAR(MAX))
FROM
SYS.DM_EXEC_REQUESTS
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
WHERE blocking_session_id != 0
上图我们得到了正在发生阻塞的会话信息和所执行的SQL语句(Definition)
原文地址:https://www.cnblogs.com/broadm/archive/2022/07/15/16482308.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5011.html