原理非常简单,首先是获取所有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
然后dbcc INPUTBUFFER(spid)来获取指定进程执行的SQL,最后用kill spid来中止SQL进程。