惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
U
Unit 42
MyScale Blog
MyScale Blog
B
Blog
阮一峰的网络日志
阮一峰的网络日志
量子位
IT之家
IT之家
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Recent Announcements
Recent Announcements
V
Visual Studio Blog
G
Google Developers Blog
Last Week in AI
Last Week in AI
雷峰网
雷峰网
博客园 - 聂微东
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
J
Java Code Geeks
博客园 - 司徒正美
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
月光博客
月光博客
aimingoo的专栏
aimingoo的专栏

博客园 - vento

[转]15年双11手淘前端技术巡演 - H5性能最佳实践 [转]新兵训练营系列课程——编写优雅代码 [转]新兵训练营系列课程——海量数据存储基础 [转]新兵训练营系列课程——平台RPC框架介绍 [转]mysql binlog in realtime 利用IDA Pro反汇编程序 WinDbg入门 小巧方便的ORM类库——PetaPoco 2011总结 门户网站的ip查询接口 Lucene实践 xp3中运行s60 v3模拟器,出现闪退问题的解决方法 ubuntu日常操作 使用Mono.Cecil更改程序集dll特性 增加Android模拟器的"Internal Storage"容量 WSGI处理流程图 linux常用命令 了解IIS的主机名(Host Headers)配置项 如何在ubuntu server 10.04中安装vmware tools
如何查看哪些进程和服务器正在使用数据库
vento · 2012-03-17 · via 博客园 - vento

工作中有时会碰到需要迁移数据库的时候,如更换机房,更换新服务器等。迁移数据库最重要是要确保正在运行的程序不会因为漏更改连接字符串而导致程序报错。但有时维护的项目可能老旧,没有相关维护文档,还有一些使用该数据库的windows服务也可能遍布在其他服务器上,这时我们该如何找到所有正在使用该数据库的服务呢? 下面以windows服务器和Sql Server数据库为例,数据库服务器的ip是192.168.6.189,linux平台的思路差不多,只是命令有变化。

1、查看Sql Server进程ID

打开任务管理器,点击“查看->选择列”,勾选“PID(进程标识符)

 

进程名称为“sqlservr.exe”的PID就是Sql Server的进程ID,当前是1800

2、查看当前连接Sql Server的服务器列表

打开命令行,输入下面的命令:

netstat -ano|find "1800"

结果如下:

C:\Documents and Settings>netstat -ano|find "1800"
  TCP    0.0.0.0:3758           0.0.0.0:0              LISTENING       1800
  TCP    0.0.0.0:5025           0.0.0.0:0              LISTENING       1800
  TCP    127.0.0.1:1434         0.0.0.0:0              LISTENING       1800
  TCP    192.168.6.189:3758     192.168.6.76:2685      ESTABLISHED     1800
  TCP    192.168.6.189:3758     192.168.6.76:2725      ESTABLISHED     1800

该命令会打印出所有连接到1800进程的服务器列表,可以看到192.168.6.76这台服务器正在连接到Sql Server。

3、查看连接到数据库服务器的进程

进入服务器192.168.6.76,打开命令行,输入下面的命令:

netstat -ano |find "6.189"

6.189是数据库服务器的ip,find命令用来查找带有"6.189"字符串的行。输出如下:

d:\webroot>netstat -ano |find "6.189"
  TCP    192.168.6.76:2685      192.168.6.189:3758     ESTABLISHED     8520
  TCP    192.168.6.76:2725      192.168.6.189:3758     ESTABLISHED     8520

结果最右边的就是正连接到数据库服务器的进程ID,当前是8520.现在已经找到进程了^0^,你只需打开任务管理器,看下该进程ID对应是进程是什么,就能准确定位了。

4、查看IIS进程对应的站点

有时我们找到使用数据库的进程了,但是像IIS这种程序,因为所有站点的进程名都相同,所以无法准备定位了。

有什么方法可以找到w3wp.exe对应的站点名呢?可以使用iisapp命令:

d:\webroot>iisapp -a
W3WP.exe PID: 6584   AppPoolId: test1.com
W3WP.exe PID: 16304   AppPoolId: Special
W3WP.exe PID: 8520   AppPoolId: test2.com
W3WP.exe PID: 3164   AppPoolId: test3.com

iisapp命令会输出W3WP进程对应的应用程序池名,通过应用程序池名我们就能准备定位站点:)