USE
master
go
IF
OBJECT_ID
(
'
tempdb..#temp
'
)
IS
NOT
NULL
DROP
TABLE
#
temp
CREATE
TABLE
#
temp
(
id
INT
IDENTITY
(
1
,
1
)
NOT
NULL
,Proc_info
NVARCHAR
(
MAX
)
NULL
,
CONSTRAINT
pk_id
PRIMARY
KEY
( id
ASC
)
)
--
insert data into temp table
INSERT
INTO
#
temp
( Proc_info )
EXEC
master..xp_cmdshell
'
tasklist /v
'
--
delete the wrong records
DELETE
FROM
#
temp
WHERE
Proc_info
IS
NULL
OR
Proc_info
LIKE
'
%==========%
'
OR
ID
=
2
GO
--
create 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
SELECT
dbo.F_split_V2(Proc_info,
1
)
AS
image_name
,dbo.F_split_V2(Proc_info,
2
)
AS
PID
,dbo.F_split_V2(Proc_info,
3
)
AS
session_name
,dbo.F_split_V2(Proc_info,
4
)
AS
session#
,dbo.F_split_V2(Proc_info,
5
)
+
'
K
'
AS
Memory
,dbo.F_split_V2(Proc_info,
6
)
AS
User_name
,dbo.F_split_V2(Proc_info,
7
)
AS
cpu_time
,
'
xp_cmdshell
''
taskkill -IM
'
+
dbo.F_split_V2(Proc_info,
1
)
+
'
/f
'''
AS
script
FROM
#
temp