利用sys.sysprocesses检查SqlServer的阻塞和死锁

Sys.SysProcesses 系统表是一个很重要的系统视图,主要用来定位与解决Sql Server的阻塞死锁

MSDN:包含正在 SQL Server 实例上运行的进程的相关信息。这些进程可以是客户端进程或系统进程。

视图中主要的字段:
1. Spid:Sql Servr 会话ID
2. Kpid:Windows 线程ID
3. Blocked:正在阻塞求情的会话 ID。如果此列为 Null,则标识请求未被阻塞
4. Waittype:当前连接的等待资源编号,标示是否等待资源,0 或 Null表示不需要等待任何资源
5. Waittime:当前等待时间,单位为毫秒,0 表示没有等待
6. DBID:当前正由进程使用的数据库ID
7. UID:执行命令的用户ID
8. Login_time:客户端进程登录到服务器的时间。
9. Last_batch:上次执行存储过程或Execute语句的时间。对于系统进程,将存储Sql Server 的启动时间
10.Open_tran:进程的打开事务个数。如果有嵌套事务,就会大于1
11.Status:进程ID 状态,dormant = 正在重置回话 ; running = 回话正在运行一个或多个 ; background = 回话正在运行一个后台任务 ; rollback = 会话正在处理事务回滚 ; pending = 回话正在等待工作现成变为可用 ; runnable = 会话中的任务在等待获取 Scheduler 来运行的可执行队列中 ; spinloop = 会话中的任务正在等待自旋锁变为可用 ; suspended = 会话正在等待事件完成
12.Hostname:建立链接的客户端工作站的名称
13.Program_name:应用程序的名称,就是 连接字符串中配的 Application Name
14.Hostprocess:建立连接的应用程序在客户端工作站里的进程ID号
15.Cmd:当前正在执行的命令
16.Loginame:登录名

应用实例:

1. 检查数据库是否发生阻塞

先查找哪个链接的 blocked 字段不为0。如 SPID53的blocked 字段不为0,而是 52。SPID 52 的 blocked 为0,就可以得出结论:此时有阻塞发生,53 被 52 阻塞住了。如果你发现一个连接的 blocked 字段的值等于它自己,那说明这个连接正在做磁盘读写,它要等自己的 I/O 做完。

2. 查找链接在那个数据库上

检查 dbid 即可。得到 dbid,可以运行以下查询得到数据库的名字:
Select name,dbid from master.sys.sysdatabases

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/446695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 21:08:36
下一篇 2025年11月7日 21:14:45

相关推荐

  • Java中死锁如何避免 分析死锁产生的四个必要条件

    预防死锁最有效的方法是破坏死锁产生的四个必要条件中的一个或多个。死锁的四个必要条件分别是互斥、占有且等待、不可剥夺和循环等待;其中,互斥通常无法破坏,但可以减少使用;占有且等待可通过一次性申请所有资源来打破;不可剥夺可通过允许资源被剥夺打破;循环等待可通过按序申请资源解决。此外,reentrantl…

    2025年12月5日 java
    300
  • 如何使用PHP从SQLServer获取存储过程的详细教程?

    php可以实现从sql server获取存储过程的详细信息,但需通过sqlsrv或pdo_sqlsrv扩展配合以下步骤完成:1. 确保php环境已正确安装并启用sqlsrv扩展,检查php.ini中启用了extension=sqlsrv和extension=pdo_sqlsrv,并使用sqlsrv_…

    2025年12月4日 后端开发
    000
  • Linux下安装SQLServer2019的方法

    可以直接参考官方文档:https://www.php.cn/link/32824c14387bff0a269b11c976c1d0d0 安装SQL Server 首先,下载 SQL Server 2019 (15.x) 的 Red Hat 存储库配置文件: sudo curl -o /etc/yum…

    2025年12月4日
    000
  • 简易项目搭建(用于一般杂七杂八的小功能点)

    在工作中,我们常常会遇到许多需要完成的小功能点。以我自己的工作情况为例,最常见的是两个方面:1、控制台项目;2、web界面(纯前端)。 首先让我们讨论控制台项目的工作内容。在没有使用PostMan之前,工作中大量使用接口调用。在项目准备阶段,首先需要对接口的使用进行描述。在主要使用WebServic…

    2025年12月4日
    000
  • 条码打印软件批量制作JAN13条码的方法

    jan码属于日本特有的条码规范,其编码准则和国际通行的ean码一致,只是称谓有所差异。如果要大批量生成jan13条码,可以借助条码打印软件里的ean13码功能来实现。两者唯一的不同点在于,jan13条码的前两位数字必须是45或49,这代表日本的国家代码,类似于我国条码以69开头的情形。 1、 制作J…

    2025年12月3日 软件教程
    000
  • SQLServer插入标识列数据怎么写_SQLServer标识列插入方法

    要向SQL Server的标识列插入指定值,需启用IDENTITY_INSERT。首先执行SET IDENTITY_INSERT 表名 ON;然后在INSERT语句中显式包含标识列并赋值;操作完成后必须执行SET IDENTITY_INSERT 表名 OFF;该操作仅限会话级别,且需ALTER权限,…

    2025年12月3日 数据库
    000
  • SQLServer连接字符串怎么配置_SQLServer数据源连接字符串设置

    配置SQL Server连接字符串需设置Data Source、Initial Catalog、User ID、Password等参数,推荐通过配置文件定义以提升可维护性;使用Windows身份验证时需启用Integrated Security=True,并确保用户权限合法;错误配置将导致连接超时、…

    2025年12月3日 数据库
    000
  • SQLServer插入特殊字符怎么转义_SQLServer特殊字符转义插入

    使用参数化查询可解决SQL Server中特殊字符转义问题并防止SQL注入,推荐通过参数传递数据而非拼接SQL,同时注意单引号、反斜杠等字符的手动转义及编码一致性。 插入SQL Server数据库时遇到特殊字符转义问题,通常是因为这些字符与SQL语法冲突。核心在于使用正确的转义方法,确保数据被正确解…

    2025年12月3日 数据库
    000
  • SQLServer如何计算连续登录_SQLServer中连续登录问题解法

    答案是使用ROW_NUMBER()窗口函数结合日期差计算分组键,识别连续登录“岛屿”。通过先获取用户每日唯一登录记录,再为每个登录日期分配行号并计算LoginDate减去行号的差值作为分组依据,相同差值的日期属于同一连续区间,最后按用户和该差值分组统计天数,即可得出各连续登录段的起止日期与天数。此方…

    2025年12月3日 数据库
    000
  • SQLServer镜像数据源怎么配_SQLServer数据库镜像数据源配置

    SQL Server数据库镜像的核心在于服务器端先建立镜像伙伴关系,客户端再通过连接字符串配置故障转移伙伴实现自动切换。首先,主数据库需处于完整恢复模式,并通过完整备份和日志备份将数据以NORECOVERY方式还原到镜像服务器;接着,在主、镜像及见证服务器上创建镜像端点并确保防火墙开放相应端口;然后…

    2025年12月3日 数据库
    000
  • SQLServer命名实例数据源配置_SQLServer命名实例连接设置

    连接SQL Server命名实例需在连接字符串中使用“服务器名实例名”格式,如MYSERVERSQLEXPRESS,客户端通过SQL Server Browser服务获取实例端口完成连接;不同编程语言(如C#、Java、Python)虽语法不同,但均遵循此核心模式;常见错误包括实例名错误、SQL S…

    2025年12月3日 数据库
    000
  • SQLServer数据源驱动怎么选_SQLServer数据源驱动程序选择

    答案:选择SQL Server数据源驱动应根据应用语言和需求确定。Java应用首选Microsoft JDBC Driver,.NET应用推荐Microsoft.Data.SqlClient,二者在性能、功能支持和新特性集成上优于通用ODBC驱动;虽ODBC适用于跨平台或遗留系统,但原生驱动因更优的…

    2025年12月3日 数据库
    000
  • SQLServer添加记录如何实现_SQLServer插入新记录方法

    答案:SQL Server中通过INSERT INTO语句插入数据,可结合VALUES、SELECT、BULK INSERT等实现单条、批量或跨表插入;处理约束冲突可用IF NOT EXISTS、MERGE或TRY…CATCH;从查询结果插入使用INSERT INTO … S…

    2025年12月3日 数据库
    000
  • SQLServer插入时性能监控怎么看_SQLServer插入性能监控方法

    SQL Server插入性能监控与优化需从多维度入手,核心在于分析事务日志写入、I/O开销、锁等待及索引维护。通过动态管理视图(DMVs)可实时诊断阻塞与等待类型;扩展事件精准捕获INSERT语句的执行细节与资源消耗;性能监视器(PerfMon)提供系统级指标如日志刷新速率和页分裂频率;查询存储则用…

    2025年12月3日 数据库
    100
  • SQLServer插入时加密数据怎么操作_SQLServer加密数据插入方法

    SQL Server数据加密核心方法包括:1. 使用ENCRYPTBYPASSPHRASE进行密码短语加密,操作简单但安全性较低,适用于测试场景;2. 使用ENCRYPTBYKEY通过对称密钥加密,结合数据库主密钥、证书和对称密钥的分层体系,安全性高,适合生产环境;3. 单元格级加密用于保护特定敏感…

    2025年12月3日 数据库
    000
  • postgresqlserverless模式是否适用数据库_postgresql无服务器模式讨论

    PostgreSQL 无服务器模式适合流量波动大、成本敏感的场景,如开发测试、MVP 项目、事件驱动应用;其自动伸缩、按需付费特性降低运维负担,但不适用于高并发稳定负载、延迟敏感或复杂事务场景,需根据实际 workload 权衡选择。 PostgreSQL 无服务器(Serverless)模式正在成…

    2025年12月2日 数据库
    000
  • SQLSERVER:PREEMPTIVE_OS_GETPROCADDRESS等待类型的困惑

    SQLSERVER:PREEMPTIVE_OS_GETPROCADDRESS等待类型的困惑 翻译自: PREEMPTIVE_OS_GETPROCADDRESS等待类型在SQLSERVER2008里是一个新的等待类型 这个等待类型的作用是当GetProcAddress跟踪SQLSERVER实例调用扩展…

    数据库 2025年12月2日
    000
  • 2014 OLTP Memory Database lock 测试

    根据微软的说法,由于内存数据库使用了乐观并发控制,所以事务不需要锁来锁定资源保证一致性。微软认为在内存数据库的事务中冲突和失败是非常少的情况,所以假定 name size name size dbo20480 ix_Int_Val10240   [Description]  request_sess…

    2025年12月2日
    000
  • SQLSERVER数据库快照的工作方式

    SQLSERVER数据库快照的工作方式 翻译自:how database snapshots work 最近有一个帖子《errorlog中的异常信息rolled forward 和rolled back》 里面说到: 每周六凌晨1点会出现以下信息,服务器及数据库未出现重启,节点未切换,filestr…

    2025年12月2日 数据库
    000
  • SQLSERVER中的ALL、PERCENT、CUBE关键字和GROUPING函数

    SQLSERVER中的ALL、PERCENT、CUBE关键字和GROUPING函数 先来创建一个测试表 #temptb(id INT ,NAME VARCHAR ( 200 )) ( , ) ,,,,,,, , SQLSERVER中的ALL、PERCENT、CUBE关键字和GROUPING函数  先…

    2025年12月2日
    000

发表回复

登录后才能评论
关注微信