SQL Server 在线进程分析处理
前言
数据库在线进程处理在很多时候需要人为干预已达到预期管理目标,下面整理一下常用的在线进程管理方法,便于后续工作使用。
一、查看目标数据库在线进程,并杀死指定进程
- 检索当前数据库在线进程
SELECT * FROM sys.sysprocesses WHERE dbid=DB_ID('AdventureWorks')
- 杀掉指定进程
kill spid
二、删除SQL Server在线用户
- 查询指定用户的当前在线进程
select spid from sysprocesses where loginame='Login_Name';
- 杀掉指定进程
kill spid
三、查看当前阻塞并清除
--例如使用master数据库,sa用户进行检索
use master
go
--查看线程,分析blocked 较多的进程,
SELECT * FROM SYSPROCESSES WHERE blocked >0 order by blocked ;
--继续查看进程被谁阻塞,分析导致阻塞的源头
SELECT * FROM SYSPROCESSES WHERE spid =spid_no
--查看此进程执行的SQL 是哪个,查找问题原因
dbcc inputbuffer(spid);
--KILL 掉当前导致阻塞的SQL
kill spid