16

How can I create a stored procedure to start a SQL Server job?

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
g_shockTan
  • 325
  • 2
  • 8
  • 15

3 Answers3

17
-- Create SQL Server Agent job start stored procedure with input parameter
CREATE PROC uspStartMyJob @MyJobName sysname
AS
DECLARE @ReturnCode tinyint -- 0 (success) or 1 (failure)
EXEC @ReturnCode=msdb.dbo.sp_start_job @job_name=@MyJobName;
RETURN (@ReturnCode)
GO

OR with no parameter:

-- Create stored procedure to start SQL Server Agent job
CREATE PROC StartMyMonthlyInventoryJob
AS
EXEC msdb.dbo.sp_start_job N'Monthly Inventory Processing';
GO
-- Execute t-sql stored procedure
EXEC StartMyMonthlyInventoryJob

EDIT FYI: You can use this PRIOR to starting IF you don't want to start the job IF it is running currently, work this in your stored proc:

-- Get run status of a job
-- version for SQL Server 2008 T-SQL - Running = 1 = currently executing
 -- use YOUR guid here
DECLARE @job_id uniqueidentifier = '5d00732-69E0-2937-8238-40F54CF36BB1' 
EXEC master.dbo.xp_sqlagent_enum_jobs 1, sa, @job_id
Mark Schultheiss
  • 32,614
  • 12
  • 69
  • 100
15

You can execute the stored procedure sp_start_job in your stored procedure.

See here: http://msdn.microsoft.com/en-us/library/ms186757.aspx

Andrea Colleoni
  • 5,919
  • 3
  • 30
  • 49
7

Create your store procedure and run the job inside your proc as follows:

DECLARE @JobId binary(16)
SELECT @JobId = job_id FROM msdb.dbo.sysjobs WHERE (name = 'JobName')

IF (@JobId IS NOT NULL)
BEGIN
    EXEC msdb.dbo.sp_start_job @job_id = @JobId;
END
Jorge Garcia
  • 2,042
  • 23
  • 25