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