代码改变世界

开源项目:SQL Monitor 3.0.8

2010-11-22 19:17  灵感之源  阅读(...)  评论(... 编辑 收藏

什么事

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

 

公司的系统复杂,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