SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析
原文:SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析

今天遇到一个很奇怪的情况,发现一个会话异常,这个会话只是在执行一个简单的存储过程,里面使用了链接服务器(Linked Server)查询另外一台服务器数据(存储过程里面没有任何显性事务、UPDATE、DELETE操作,只有几个简单的SELECT查询,其中有两个查询使用了链接服务器Linked Server,由于生产环境,不好贴出SQL语句),在DPA监控工具里面,发现该会话引起了非常长的OLEDB等待时间,手工执行测试,发现并不耗费很长时间,KILL该会话后, 回滚状态已完成一直是0%, 估计剩余时间也一直是0秒。如下截图所示:

KILL 129 WITH STATUSONLY; 
 
SPID 129: 正在进行事务回滚。估计回滚已完成: 0%。估计剩余时间: 0 秒。

如下所示,这个会话的start_time(Timestamp when the request arrived. Is not nullable.)为2016-10-18 02:17:58.210,到现在2016-10-19 16:02:30.173已经有几十个小时了,我kill会话的时间点为2016-10-19 12:00:01。

可以看到它的等待类型是OLEDB等待(图一),也就是说等待链接服务器所指的服务器返回结果。另外这个事务的transaction_type为2,意味这只是一个Read-only transaction(避免别人误解,这是一个证据),transaction_state为2,表示事务处于活动状态(The transaction is active)。事务出现的这个时间点引起了我的注意,因为链接服务器所指向的这台服务器出现宕机(参考链接VmWare平台Windows Server 2012 无响应宕机),刚好是那台服务器虚拟机出现宕机时候,重启的时间点前面一点(那台服务器凌晨1点多宕机,2:22AM的时候重启的)。从DPA监控工具也能看到确实是那个点出现的。如下所示:

这种分布式查询,由于Linked Server所指的服务器出现异常(例如宕机),这边的会话进程一直在等待其返回结果,但是Linked Server所指服务器由于异常永远都无法给这个会话进程反馈任何结果,就出现了这种情况,不过有点奇怪的是,这种情况无法通过KILL会话来结束。 只能通过重启服务器来解决问题, 也不能通过Kill进程解决(因为SQL Server是单进程多线程架构,不像ORACLE那种多进程架构,可以从操作系统层面杀掉进程或线程(Windows平台,Oracle提供了一个工具ORAKILL utility 可以Kill线程)),但是重启数据库是一个很麻烦的事情。 所以这个僵尸会话就一直存在数据库里面,对于我这个有强迫症的人,看着它的存在,总想干掉它. 确实是个折磨人的事情.

posted on 2018-08-03 08:57 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/9411451.html

SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析相关推荐

  1. KILL Linked Server异常中断会话后一直处于KILLED/ROLLBACK状态

    一. 问题背景 开发反馈有一个job下午一直没执行,登上数据库检查发现job之前只执行几分钟,但这一次执行了5个小时还在跑.查看SqlServer中当前在执行的语句,发现有一个用到了Linked Se ...

  2. sql server 监视_使用动态管理对象监视SQL Server –会话和连接

    sql server 监视 A fundamental task of Database Administrators is monitoring SQL Server performance. Wh ...

  3. SQL Server - 数据库恢复的时候停在 Restoring 状态

    http://stackoverflow.com/questions/520967/sql-server-database-stuck-in-restoring-state 执行以下语句,可恢复数据库 ...

  4. SQL Server中的KILL SPID命令

    This article gives an overview of the KILL SPID command and how to monitor the rollback progress. 本文 ...

  5. 生产mysql遇到kill不掉的sql的解决方法

    一.问题描述 今天上线,生产mysql有个2700万数据的大表lt_integral_detail_info,准备给这个表加字段.加索引: 执行加字段加索引的命令比较费时,结果这时有人对这个表执行了多 ...

  6. SQL Server 的锁定和阻塞

    本帖提供两种做法,可避免在 SQL Server 事务锁定时产生的不正常或长时间阻塞,让用户和程序也无限期等待,甚至引起 connection pooling 连接数超过容量. 所谓的「阻塞」,是指当 ...

  7. 需要我们了解的SQL Server阻塞原因与解决方法 - sym_cn

    2019独角兽企业重金招聘Python工程师标准>>> 这里通过连接在sysprocesses里字段值的组合来分析阻塞源头,可以把阻塞分为以下5种常见的类型(见表).waittype ...

  8. 快速搞懂 SQL Server 的锁定和阻塞

    本帖提供两种做法,可避免在 SQL Server 事务锁定时产生的不正常或长时间阻塞,让用户和程序也无限期等待,甚至引起 connection pooling 连接数超过容量. 所谓的「阻塞」,是指当 ...

  9. SQL Server 阻塞原因分析

    这里通过连接在sysprocesses里字段值的组合来分析阻塞源头,可以把阻塞分为以下5种常见的类型(见表).waittype,open_tran,status,都是sysprocesses里的值,& ...

最新文章

  1. 浏览器tab关闭事件_Python--使用Pyqt5实现简易浏览器(最新版本测试过)
  2. “全能”选手—Django 1.10文档中文版Part2
  3. boost::statechart模块实现无效结果复制测试
  4. OpenOffice java api UNO 设置属性总结
  5. msmq 发送到远程专用队列不存在_不知道消息中间件是什么?RabbitMQ从头到尾详解介绍...
  6. JupyterLab显示pyecharts图像
  7. ASP中FSO的神奇功能(1)
  8. 区块链音乐流媒体平台ROCKI版税收入权NFT售价达40 ETH
  9. Android学习之路-----倒计时欢迎界面(更有条理)
  10. java输入验证码代码,JavaWeb 实现验证码功能(demo)
  11. tp模式 生命周期 命名空间 路由
  12. html5有哪些优点,HTML5真正的优势优点有什么?
  13. (4) IFC属性及属性集 (Industry Foundation Class)
  14. java模拟器gba模拟器,CAPRunner-JavaCard字节码仿真器-Benoît Allard
  15. 持久内存服务器大多数数据库管理系统,内存数据库VS传统数据库:如何在多个任务之间共享内存中的数据?...
  16. linux操作系统安装教程图解【图文教程】
  17. 图解C/C++底层:函数栈帧的创建和销毁(下篇)
  18. 用计算机做电子贺卡送祝福,全国信息技术优质课一等奖电子贺卡送祝福教案.doc...
  19. 重磅 | 谱尼测试圆满承办化妆品生产企业研学班
  20. 职教mooc计算机组装与维护课程网课答案,2020-网课答案-高职心理辅导与教育-中国大学mooc...

热门文章

  1. SQL Server 获取表或视图结构信息
  2. OWC的问题——散点图与折线图如何才能同时显示
  3. 目标检测的图像特征提取
  4. React Bind Handle的思考
  5. 聚焦上海:千锤百炼出神器,高可用架构实战案例
  6. Hyperledger子项目
  7. iOS程序员眼中的客户端免登陆(数据迁移已更新)
  8. UVa11427 Expect the Expected
  9. centos7和centos6的区别
  10. Linux快速入门02-文件系统管理