代码改变世界

开源项目:SQL Monitor 3.0.8

  灵感之源  阅读(15010)  评论(32编辑  收藏  举报

什么事

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

 

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

 


 

  

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2004-11-22 DotNetNuke(DNN)3.0.4 Public Beta完全体验研究(2)-对比2.x真实改进
点击右上角即可分享
微信分享提示