Оригинал статьи: https://habrahabr.ru/post/314632/
Объединил две процедуры в одну и убрал проверки баз. Удаляет процессы старше 3 часов конкретной базы и конкретного пользователя.
Создаем хранимую процедуру:
USE [имя_вашей_базы]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[KillConnect]
@databasename nvarchar(255),
@loginname nvarchar(255)
AS
BEGIN
/*
Удаляет соединения для указанной БД и указаного логина входа
*/
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
begin
declare @query nvarchar(max);
set @query = '';
select @query=coalesce(@query,',' )
+'kill '
+convert(varchar, spid)
+'; '
from master..sysprocesses
where dbid=db_id(@databasename)
and spid<>@@SPID
and loginame=@loginname
and [last_batch]<dateadd(hour,-3,getdate())
order by [last_batch]
if len(@query) > 0
begin
begin try
exec(@query);
end try
begin catch
end catch
end
end
END
Запускаем процедуру:
USE имя_вашей_базы;
GO
EXEC dbo.KillConnect @databasename = имя_вашей_базы, @loginname = ваш_логин;
GO
Объединил две процедуры в одну и убрал проверки баз. Удаляет процессы старше 3 часов конкретной базы и конкретного пользователя.
Создаем хранимую процедуру:
USE [имя_вашей_базы]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[KillConnect]
@databasename nvarchar(255),
@loginname nvarchar(255)
AS
BEGIN
/*
Удаляет соединения для указанной БД и указаного логина входа
*/
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
begin
declare @query nvarchar(max);
set @query = '';
select @query=coalesce(@query,',' )
+'kill '
+convert(varchar, spid)
+'; '
from master..sysprocesses
where dbid=db_id(@databasename)
and spid<>@@SPID
and loginame=@loginname
and [last_batch]<dateadd(hour,-3,getdate())
order by [last_batch]
if len(@query) > 0
begin
begin try
exec(@query);
end try
begin catch
end catch
end
end
END
Запускаем процедуру:
USE имя_вашей_базы;
GO
EXEC dbo.KillConnect @databasename = имя_вашей_базы, @loginname = ваш_логин;
GO
Комментариев нет:
Отправить комментарий