Fanr

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  395 随笔 :: 0 文章 :: 184 评论 :: 48万 阅读
复制代码
CREATE proc usp_clr_Session
as
begin
DECLARE @spid INT,@strSql VARCHAR(200),@pid int

if object_id('tempdb..#temp') is not null
drop table #temp
create table #temp
(
id
int identity(1,1) not null
,Proc_info
varchar(8000) null
)
--insert data into temp table
insert into #temp(Proc_info)
exec master..xp_cmdshell 'tasklist /v /fi "imagename eq clinkivr.exe"'

--delete the wrong records
delete from #temp
where Proc_info is null or Proc_info like '%==========%' or ID=2

select @pid = isnull(max(dbo.F_split_V2(Proc_info,2)) ,-1)
from #temp

print (@pid)

DECLARE clr_sp_cursor CURSOR FOR
SELECT SPID
FROM master..sysprocesses
WHERE cmd = 'AWAITING COMMAND' AND dbid >4 AND status = 'sleeping' and hostprocess = @pid

OPEN clr_sp_cursor;

FETCH NEXT FROM clr_sp_cursor
INTO @spid;

WHILE @@FETCH_STATUS = 0
BEGIN
SET @strSql = 'kill ' + RTRIM(@spid)
PRINT (@strsql)
EXEC (@strsql)
FETCH NEXT FROM clr_sp_cursor
INTO @spid;
END
CLOSE clr_sp_cursor;
DEALLOCATE clr_sp_cursor;

end
GO
复制代码
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

/*
select * FROM master..sysprocesses where hostprocess = 3368 order by cpu desc

master..xp_cmdshell 'tasklist /v'
*/

--ALTER a splite function
Create function F_split_V2(@S nvarchar(4000),@i int)
returns nvarchar(100)
as
begin
if @i=1--Image_name
begin
if patindex('%.exe%',@s)=0
set @s=rtrim(left(@s,patindex('%[0-9]%',@s)-1))
else
set @s=rtrim(left(@s,patindex('%.exe%',@s)+4))
end
else if @i=2--Pid
begin
if patindex('%.exe%',@s)=0
set @s=stuff(@s,1,patindex('%[0-9]%',@s)-1,'')
else
set @s=ltrim(substring(@s,patindex('%.exe%',@s)+4,len(@s)))

select @s=rtrim(left(@s,patindex('%[^0-9]%',@s)-1))
end
else if @i=3--Session_name
begin
if patindex('%.exe%',@s)=0
set @s=stuff(@s,1,patindex('%[0-9]%',@s)-1,'')
else
set @s=ltrim(substring(@s,patindex('%.exe%',@s)+4,len(@s)))
select @s=stuff(@s,1,patindex('%[^0-9]%',@s)-1,''),
@s=rtrim(left(@s,patindex('%[0-9]%',@s)-1))
end
else if @i=4--Session#
begin
if patindex('%.exe%',@s)=0
set @s=stuff(@s,1,patindex('%[0-9]%',@s)-1,'')
else
set @s=ltrim(substring(@s,patindex('%.exe%',@s)+4,len(@s)))
select @s=stuff(@s,1,patindex('%[^0-9]%',@s)-1,'')
,
@s=stuff(@s,1,patindex('%[0-9]%',@s)-1,'')
,
@s=rtrim(left(@s,patindex('% %',@s)-1))
end
else if @i=5--memory
begin
if patindex('%.exe%',@s)=0
set @s=stuff(@s,1,patindex('%[0-9]%',@s)-1,'')
else
set @s=ltrim(substring(@s,patindex('%.exe%',@s)+4,len(@s)))

select @s=stuff(@s,1,patindex('%[0-9]%',@s)-1,'')
,
@s=stuff(@s,1,patindex('%[^0-9]%',@s)-1,'')
,
@s=stuff(@s,1,patindex('%[0-9]%',@s)-1,'')
,
@s=stuff(@s,1,patindex('%[1-9]%',@s)-1,'')
,
@s=rtrim(left(@s,patindex('%k%',@s)-1))
end
else if @i=6--user_name
select @s=stuff(@s,1,patindex('%[0-9]%',@s)-1,'')
,
@s=stuff(@s,1,patindex('%[^0-9]%',@s)-1,'')
,
@s=stuff(@s,1,patindex('%[0-9]%',@s)-1,'')
,
@s=stuff(@s,1,patindex('%[1-9]%',@s)-1,'')
,
@s=rtrim(substring(@s,patindex('%\%',@s)+1,18))
else if @i=7--cup_time
select
@s=substring(@s,patindex('%[0-9]:[0-9][0-9]:[0-9][0-9]%',@s),8)
else
select @s=right(@s,charindex(' ',reverse(@s),3)-1)
return @s
end

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
复制代码
复制代码
posted on   Fanr_Zh  阅读(815)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示