Spiga

开源项目:SQL Monitor 3.0.8

2010-11-22 19:17 by 灵感之源, 4812 visits, 收藏, 编辑

什么事

前几天有点无聊,想写点新东西。

 

公司的系统复杂,SQL Server经常会CPU占用100%,SQL Monitor就是用来帮助分析什么SQL的执行导致这个问题的。

 

怎么办

原理非常简单,首先是获取所有SQL进程,方法有多种:

 

1.sys.sysprocesses:在SQL Server 2000就声明要被移除了,不建议使用。实际上sys.sysprocesses是用以下的dmv来映射的。

 

2. sp_who

 

3. sp_who2:跟sp_who类似,获取的字段比sys.sysprocesses和以下的dmv要少。

 

4. sys.dm_exec_sessions等相关dmv:

select * from sys.dm_exec_connections
select * from sys.dm_exec_requests
select * from sys.dm_exec_sessions

 

关于sys.dm_exec_sessions等dmv,可以参看这里:http://msdn.microsoft.com/en-us/library/ms187997.aspx

 

然后dbcc INPUTBUFFER(spid)来获取指定进程执行的SQL,最后用kill spid来中止SQL进程。

 

实际调试起来,会用到其它复杂的SQL,譬如是什么锁,锁定哪个数据库中的哪个表,等等,下一篇文章才写吧。

 

 

能干嘛

 

1. 监控SQL Server的进程和Job,查看当前执行的SQL/命令,并终止之。

2. 对象浏览器,跟 SQL Server Management Studio 类似

3. 查询数据

4. 数据库收缩、备份、分离等

5. 性能分析

6. 对象/脚本查找 

 

 

什么要求

 

这个项目是用C# 3.5写的,为了省事,用了Linq,所以要求.net框架为3.5 Client Profile,如果你把Linq换成for/next,可以在2.0环境使用。

 

在哪里

项目地址:http://sqlmon.codeplex.com/

 

最新版本下载SQLMon 3.0 alpha 8 src    SQLMon 3.0 alpha 8 binary 

 


 

  

Add your comment

21 条回复

  1. #1楼 尘尘      2010-11-22 20:30
    你这是准备针对哪个版本的sql啊?
    sys.sysprocesses会在未来版本被抛弃,如果针对05或者以后版本,都是用:
    sys.dm_exec_connections
    sys.dm_exec_requests
    sys.dm_exec_sessions
    这三个dmv来获取相关信息
    http://msdn.microsoft.com/en-us/library/ms187997.aspx
     回复 引用 查看   
  2. #2楼 老罗卜      2010-11-22 20:52
    不错。以前只是用SQL语句搞。实在懒得搞成程序。支持你。
     回复 引用 查看   
  3. #3楼 ffffff      2010-11-22 22:23
    顶一个,欢迎大家一起进入QQ群讨论 42706992
     回复 引用 查看   
  4. #4楼 ffffff      2010-11-22 22:23
    推荐+1
     回复 引用 查看   
  5. #5楼[楼主] 灵感之源      2010-11-23 04:43
    @尘尘
    在2005和2008 R2都能通过,我先看看你给的资料
     回复 引用 查看   
  6. #6楼 尘尘      2010-11-23 10:02
    @灵感之源
    我知道都能通过,但是获取的信息已经不是那么可靠了,换新的dmv吧
     回复 引用 查看   
  7. #7楼[楼主] 灵感之源      2010-11-23 15:44
    @尘尘
    粗看了一下,字段都在,下一个版本改用sessions
     回复 引用 查看   
  8. #8楼[楼主] 灵感之源      2010-11-23 16:58
    @尘尘
    改用DMV了,并且做了一些修改,最新1.3
     回复 引用 查看   
  9. #9楼 徐少侠      2010-11-23 21:14
    有一个sp_who2命令,可以查询到不少数据
     回复 引用 查看   
  10. #10楼[楼主] 灵感之源      2010-11-24 09:41
    @徐少侠
    sp_who/sp_who2获取到的信息,在sysprocesses和dmv里面都有了
     回复 引用 查看   
  11. #11楼 ybgenius      2010-11-24 13:08
    这个有没有编译好的版本,我只装了vs2005,转换后编译不起来,有的话给我份,谢谢
    yebingenuis@gmail.com
     回复 引用 查看   
  12. #12楼[楼主] 灵感之源      2010-11-24 17:46
    @ybgenius
    因为图省事用了linq。

    你可以点击以下链接下载编译了的版本:http://sqlmon.codeplex.com/releases/56255/download/171259
     回复 引用 查看   
  13. #13楼[楼主] 灵感之源      2010-11-25 17:43
    发布了1.4版,做了容错,增加了自动检索本地网络的sql server实例
     回复 引用 查看   
  14. #14楼[楼主] 灵感之源      2010-12-01 19:50
    发布了2.0版,改造了界面,增加了数据库/表信息、收缩数据库/日志文件等功能
     回复 引用 查看   
  15. #15楼[楼主] 灵感之源      2010-12-15 17:59
    发布了2.8版,重新设计了对象浏览器,支持多服务器
     回复 引用 查看   
  16. #16楼[楼主] 灵感之源      2010-12-16 19:19
    发布了2.9版,自动在新建查询窗口的时候设置sql
     回复 引用 查看   
  17. #17楼[楼主] 灵感之源      2010-12-18 20:25
    SQL Monitor 3.0 alpha 3

    加入了监控
     回复 引用 查看   
  18. #18楼 金无妄      2010-12-23 10:06
    楼主现在还对captchio 进行维护吗?
     回复 引用 查看   
  19. #19楼[楼主] 灵感之源      2010-12-30 21:05
    @金无妄

    不再单独发布,已经整合到智能网络资源系统
     回复 引用 查看   
  20. #20楼 Kevan      2011-04-13 11:08
    好东西哇。
     回复 引用 查看   
  21. #21楼 五味子      2011-04-20 12:51
    进来学习的 没看太懂
     回复 引用 查看