Skip to content

Commit 1f4efc7

Browse files
committed
Add Stop long-running SQL Server Agent Jobs scripts
1 parent 526d95a commit 1f4efc7

1 file changed

Lines changed: 76 additions & 0 deletions

File tree

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
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

Comments
 (0)