-
-
Notifications
You must be signed in to change notification settings - Fork 98
/
Copy pathСоединения БД, связанные с активными заданиями.sql
53 lines (51 loc) · 1.44 KB
/
Соединения БД, связанные с активными заданиями.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
Запрос для получения информации об активных заданиях агента SQL Server,
а также связанных с ними соединениями базы данных, плюс время выполнения задания.
*/
DECLARE @AllConnections TABLE(
SPID INT,
Status VARCHAR(MAX),
LOGIN VARCHAR(MAX),
HostName VARCHAR(MAX),
BlkBy VARCHAR(MAX),
DBName VARCHAR(MAX),
Command VARCHAR(MAX),
CPUTime INT,
DiskIO INT,
LastBatch VARCHAR(MAX),
ProgramName VARCHAR(MAX),
SPID_1 INT,
REQUESTID INT
)
INSERT INTO @AllConnections
EXEC sp_who2
SELECT
sj.[job_id] AS [JobId],
sj.[name] AS [JobName],
DATEDIFF(SECOND, sja.[start_execution_date], GETDATE()) AS 'ExecutionDurationSec',
c.SPID,
c.Status,
c.LOGIN,
c.HostName,
c.BlkBy,
c.DBName,
c.Command,
c.CPUTime,
c.DiskIO,
c.LastBatch,
c.ProgramName,
c.SPID_1,
c.REQUESTID
FROM @AllConnections c
INNER JOIN [msdb].[dbo].[sysjobs] sj
ON UPPER(c.ProgramName) LIKE '%Job 0x' + UPPER(CONVERT(VARCHAR(max), CAST(sj.job_id AS varbinary(max)), 2)) + '%'
INNER JOIN [msdb].[dbo].[sysjobactivity] AS sja
ON sja.job_id = sj.job_id
INNER JOIN (
SELECT
[job_id],
MAX([session_id]) AS [session_id]
FROM [msdb].[dbo].[sysjobactivity]
GROUP BY [job_id]) ls
ON ls.job_id = sja.job_id
AND ls.session_id = sja.session_id