两种attach to process的方法

背景:

今天在做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服务不同的是,这里会提示连接超时。

posted @ 2012-08-03 20:07  xwdreamer  阅读(4508)  评论(0编辑  收藏  举报