SQL Server經(jīng)常會(huì)CPU占用100%,SQL Monitor就是用來幫助分析什么SQL的執(zhí)行導(dǎo)致這個(gè)問題的。
怎么辦
原理非常簡(jiǎn)單,首先是獲取所有SQL進(jìn)程,方法有多種:
1.sys.sysprocesses:在SQL Server 2000就聲明要被移除了,不建議使用。實(shí)際上sys.sysprocesses是用以下的dmv來映射的。2. sp_who
3. sp_who2:跟sp_who類似,獲取的字段比sys.sysprocesses和以下的dmv要少。
4. sys.dm_exec_sessions等相關(guān)dmv:
select * from sys.dm_exec_connections
select * from sys.dm_exec_requests
select * from sys.dm_exec_sessions
然后dbcc INPUTBUFFER(spid)來獲取指定進(jìn)程執(zhí)行的SQL,最后用kill spid來中止SQL進(jìn)程。
實(shí)際調(diào)試起來,會(huì)用到其它復(fù)雜的SQL,譬如是什么鎖,鎖定哪個(gè)數(shù)據(jù)庫中的哪個(gè)表,等等,下一篇文章才寫吧。
能干嘛
1. 監(jiān)控SQL Server的進(jìn)程和Job,查看當(dāng)前執(zhí)行的SQL/命令,并終止之。2. 對(duì)象瀏覽器,跟 SQL Server Management Studio 類似
3. 查詢數(shù)據(jù)
4. 數(shù)據(jù)庫收縮、備份、分離等
5. 性能分析
6. 對(duì)象/腳本查找