diff --git "a/SQL-Server-Jobs/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\321\217 \320\221\320\224, \321\201\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265 \321\201 \320\260\320\272\321\202\320\270\320\262\320\275\321\213\320\274\320\270 \320\267\320\260\320\264\320\260\320\275\320\270\321\217\320\274\320\270.sql" "b/SQL-Server-Jobs/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\321\217 \320\221\320\224, \321\201\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265 \321\201 \320\260\320\272\321\202\320\270\320\262\320\275\321\213\320\274\320\270 \320\267\320\260\320\264\320\260\320\275\320\270\321\217\320\274\320\270.sql" new file mode 100644 index 0000000..efa0a35 --- /dev/null +++ "b/SQL-Server-Jobs/\320\241\320\276\320\265\320\264\320\270\320\275\320\265\320\275\320\270\321\217 \320\221\320\224, \321\201\320\262\321\217\320\267\320\260\320\275\320\275\321\213\320\265 \321\201 \320\260\320\272\321\202\320\270\320\262\320\275\321\213\320\274\320\270 \320\267\320\260\320\264\320\260\320\275\320\270\321\217\320\274\320\270.sql" @@ -0,0 +1,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 \ No newline at end of file diff --git a/SQL-Server-Maintenance/Service-Database/Migrations/V1_0_0_10__Jobs_AddSettingsAndControlFunctions.sql b/SQL-Server-Maintenance/Service-Database/Migrations/V1_0_0_10__Jobs_AddSettingsAndControlFunctions.sql index 41a0dc0..853a5f9 100644 --- a/SQL-Server-Maintenance/Service-Database/Migrations/V1_0_0_10__Jobs_AddSettingsAndControlFunctions.sql +++ b/SQL-Server-Maintenance/Service-Database/Migrations/V1_0_0_10__Jobs_AddSettingsAndControlFunctions.sql @@ -563,6 +563,14 @@ BEGIN ON sja.job_id = sj.job_id INNER JOIN [dbo].[JobTimeouts] jtime ON jtime.JobName = sj.[name] + 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 WHERE jtime.TimeoutSec > 0 AND DATEDIFF(SECOND, sja.[start_execution_date], GETDATE()) > jtime.TimeoutSec; OPEN timeout_jobs_cursor;