開源項目:SQL Monitor 3.0.8
2010-11-22 19:17 靈感之源 閱讀(15040) 評論(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
浙公網安備 33010602011771號