两种attach to process的方法

本文记录了一次针对SQL Server的KeepAlive功能的实验过程。作者尝试通过暂停或停止服务来模拟KeepAlive失败的情况,最终发现只有挂起SQL Server进程才能达到预期效果,并观察到了连接超时的现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

今天在做keepalive的实验,设法模拟keepalive不成功的场景,从而达到“ the local TCP will keep sending “Keep Alive” packet in an interval of KeepAliveInterval for TcpMaxDataRetransmissions times. ”的目的。但是通过:

  1. stop sqlserver服务,tcp\ip能够检测到服务断开,因此在netmon中可以看到最后一条信息是服务器端发给客户端的的keepalive,scale factor=0。
  2. pause sqlserver服务,keepalive继续进行,此时使用sqlcmd连接sql server 实例会提示数据库出去paused状态。

这两种方法都不能实现上面的场景。后来经过同事提示说试一试suspend sqlservr.exe这个进程试试看,看看还能不能keepalive。从而就有了本文的主题。

要达到suspend 进程可以通过attach to process的方法,主要有两种方式:

  1. 使用visual studio->debug->attach to process
  2. 使用windbg->file->attach to a process...

可惜即使我attach process了,keepalive孩子,但是无法使用sqlcmd连接数据库实例,不过和pause服务不同的是,这里会提示连接超时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值