循環執行 `KILL @spid` 時,若包含當前連接的 SPID,會報錯「不能終止自身進程」。
CREATE PROCEDURE dbo.usp_KillOtherSpids @dbname sysname
AS
BEGIN
DECLARE @sql nvarchar(max) = N'';
SELECT @sql += N'KILL ' + CAST(spid AS varchar(10)) + N';'
FROM sys.sysprocesses
WHERE dbid = DB_ID(@dbname)
AND spid != @@SPID; -- 排除自身
EXEC sp_executesql @sql;
ENDusing (var cmd = conn.CreateCommand()) {
cmd.CommandText = "usp_KillOtherSpids";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@dbname", "YourDB");
cmd.ExecuteNonQuery();
}