1+ /*
2+ Author: Allen McGuire
3+ Source link: http://allen-mcguire.blogspot.ru/2017/08/monitor-and-stop-long-running-sql.html
4+ */
5+
6+ DECLARE @Duration_secs INT ;
7+ DECLARE @JobName SYSNAME ;
8+
9+ DECLARE @LongRunningJobs TABLE (
10+ DurationSecs INT NOT NULL
11+ , JobName SYSNAME NOT NULL
12+ , TSQLStatement NVARCHAR (300 ) NOT NULL
13+ );
14+
15+ INSERT INTO @LongRunningJobs(DurationSecs, JobName, TSQLStatement)
16+ SELECT DATEDIFF (ss, ja .start_execution_date , GETDATE ()) AS Duration_secs
17+ , jobs .name AS JobName
18+ , ' EXEC msdb.dbo.sp_stop_job N'' ' + jobs .name + ' '' ' AS TSQLStatement
19+ FROM msdb .dbo .sysjobs jobs
20+ LEFT JOIN msdb .dbo .sysjobactivity ja ON ja .job_id = jobs .job_id
21+ AND ja .start_execution_date IS NOT NULL
22+ WHERE -- jobs.name = 'Distribution clean up: distribution'
23+ -- AND
24+ stop_execution_date IS NULL ;
25+
26+ SELECT * FROM @LongRunningJobs;
27+
28+ /*
29+ USE [msdb]
30+ GO
31+ DECLARE @jobId BINARY(16)
32+ EXEC msdb.dbo.sp_add_job @job_name=N'Test',
33+ @enabled=1,
34+ @notify_level_eventlog=0,
35+ @notify_level_email=2,
36+ @notify_level_page=2,
37+ @delete_level=0,
38+ @category_name=N'[Uncategorized (Local)]',
39+ @owner_login_name=N'sa', @job_id = @jobId OUTPUT
40+ select @jobId
41+ GO
42+ EXEC msdb.dbo.sp_add_jobserver @job_name=N'Test', @server_name = @@SERVERNAME;
43+ GO
44+ USE [msdb]
45+ GO
46+ EXEC msdb.dbo.sp_add_jobstep @job_name=N'Test', @step_name=N'wait_20_seconds',
47+ @step_id=1,
48+ @cmdexec_success_code=0,
49+ @on_success_action=1,
50+ @on_fail_action=2,
51+ @retry_attempts=0,
52+ @retry_interval=0,
53+ @os_run_priority=0, @subsystem=N'TSQL',
54+ @command=N'WAITFOR DELAY ''00:00:59'';',
55+ @database_name=N'master',
56+ @flags=0
57+ GO
58+
59+ DECLARE @schedule_id int
60+ EXEC msdb.dbo.sp_add_jobschedule @job_id=N'f0cc44dc-4718-4b66-8d47-bd6f86c9c513', @name=N'Test_schedule_every_minute',
61+ @enabled=1,
62+ @freq_type=4,
63+ @freq_interval=1,
64+ @freq_subday_type=4,
65+ @freq_subday_interval=1,
66+ @freq_relative_interval=0,
67+ @freq_recurrence_factor=1,
68+ @active_start_date=20170904,
69+ @active_end_date=99991231,
70+ @active_start_time=0,
71+ @active_end_time=235959, @schedule_id = @schedule_id OUTPUT
72+ SELECT @schedule_id;
73+ GO
74+
75+ EXEC msdb.dbo.sp_delete_job @job_name = N'Test';
76+ */
0 commit comments