SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析[转]
本文将为您描述SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析,教程操作方法:
今天遇到一个很奇怪的情况,发现一个会话异常,这个会话只是在执行一个简单的存储过程,里面使用了链接服务器(Linked Server)查询另外一台服务器数据(存储过程里面没有任何显性事务、UPDATE、DELETE操作,只有几个简单的SELECT查询,其中有两个查询使用了链接服务器Linked Server,由于生产环境,不好贴出SQL语句),在DPA监控工具里面,发现该会话引起了非常长的OLEDB等待时间,手工执行测试,发现并不耗费很长时间,KILL该会话后, 回滚状态已完成一直是0%, 估计剩余时间也一直是0秒。如下截图所示:
|
1
|
KILL 129 WITH STATUSONLY; |
|
1
|
|
|
1
|
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线程)),但是重启数据库是一个很麻烦的事情。 所以这个僵尸会话就一直存在数据库里面,对于我这个有强迫症的人,看着它的存在,总想干掉它. 确实是个折磨人的事情.这篇SQL Server教程是否对您有用呢?
SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析[转]的更多相关文章
- SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析
今天遇到一个很奇怪的情况,发现一个会话异常,这个会话只是在执行一个简单的存储过程,里面使用了链接服务器(Linked Server)查询另外一台服务器数据(存储过程里面没有任何显性事务.UPDATE. ...
- HttpException (0x80004005): 无法连接到 SQL Server 会话数据库
ASP.NET 项目运行时出现错误提示:[HttpException (0x80004005): 无法连接到 SQL Server 会话数据库.] ,后排查问题发现是由于项目的Session模式是使用 ...
- 论坛中的问题:47(等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态)
原文:论坛中的问题:47(等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态) 求助:等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态 http://bbs.csdn.n ...
- SQL Server关于predicate、density、selectivity、cardinality名词浅析
在SQL Server中,我们要看懂执行计划和统计信息,我们可能需要深刻理解一些关键词,例如密度(Density).选择性(Selectivity).谓词(predicate).基数(Cardin ...
- SQL Server中LIKE %search_string% 走索引查找(Index Seek)浅析
在SQL Server的SQL优化过程中,如果遇到WHERE条件中包含LIKE '%search_string%'是一件非常头痛的事情.这种情况下,一般要修改业务逻辑或改写SQL才能解决SQL执行 ...
- SQL Server扩充表字段长度,引发的意外KILLED/ROLLBACK
这一段时间,因为系统升级,新系统产生的数据长度,比原来的数据长度要长,所以说要扩充一下字段长度. ) --修改字段长度sql 在执行的时候,有这样一个情况. 例如Student表的Name字段长度是n ...
- 扩充表字段长度,引发的意外KILLED/ROLLBACK
这一段时间,因为系统升级,新系统产生的数据长度,比原来的数据长度要长,所以说要扩充一下字段长度. ) --修改字段长度sql 在执行的时候,有这样一个情况. 例如Student表的Name字段长度是n ...
- sql server block如何查询并kill
本帖提供两种做法,可避免在 SQL Server 事务锁定时产生的不正常或长时间阻塞,让用户和程序也无限期等待,甚至引起 connection pooling 连接数超过容量. 所谓的「阻塞」,是指当 ...
- 需要我们了解的SQL Server阻塞原因与解决方法
需要我们了解的SQL Server阻塞原因与解决方法 上篇说SQL Server应用模式之OLTP系统性能分析.五种角度分析sql性能问题.本章依然是SQL性能 五种角度其一“阻塞与死锁” 这里通过连 ...
随机推荐
- 为什么可以这么快! awk 与python的应用
这几天刚处理一个排序问题 源文件: 可以看到有11G大小,需要根据最后一列的热度来做一下排序.如果让你来做这样的排序,在linux环境下,你会如何处理呢? xch27@lanzhou:/asrdata ...
- Deepin 2015 安装后找不到win10 启动选项的解决办法
#sudo vi /boot/grub/grub.cfg 在export linux_gfx_mode后面加 menuentry "Windows 10 (loader)" --c ...
- Linq简单使用
简单使用 from子查询 关联多个数据源 分组 let 子句 查询对象(上例中为list变量)为IEnumerable<T>或IQueryable<T>类型 查询返回结果同样为 ...
- list容器详解
首先说说STL ( STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件.STL现在是C++的一部分,因此不用额外安装什么.它被内建在你的编译器之内.因为STL的list是一个简单的容器, ...
- TCP/IP——IP网络协议简记
IP提供不可靠.无连接的数据报传送服务 不可靠:不保证IP数据报能成功到达目的地,当发生错误时,IP的做法是丢弃这个数据报,然后发送ICMP消息报给信息源. 无连接:IP不维护任何关于后续数据报的状态 ...
- 【BZOJ 3996】 3996: [TJOI2015]线性代数 (最小割)
3996: [TJOI2015]线性代数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1368 Solved: 832 Description 给 ...
- android 捕获所有异常 未捕获的异常
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 定义一个类 继承 应用, 实现 未捕获异常处理器 uncaughtExceptionHa ...
- Block修改变量容易被忽略的方法
C语言里面的 静态变量 静态全局变量 全局变量 其中静态变量和普通变量的截取模式是一样的,只是因为他赋值不被丢弃,所以能修改成功 code: #import <Foundation/Founda ...
- [UOJ30]/[CF487E]Tourists
[UOJ30]/[CF487E]Tourists 题目大意: 一个\(n(n\le10^5)\)个点\(m(m\le10^5)\)条边的无向图,每个点有点权.\(q(q\le10^5)\)次操作,操作 ...
- 简单DP+暴力 POJ 1050
To the Max Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 45915 Accepted: 24282 Desc ...