SQLUSA
SQL 2008 GRAND SLAM
FREE TRIAL
CLICK HERE TO ORDER

SQL Server 2008 Best Practices
SQL Server 2005 Best Practices

How to start a job from a stored procedure?

Execute the following Microsoft SQL Server T-SQL script in Management Studio Query Editor or imbed it in a stored procedure to start a job which is configured with SQL Server Agent:

-- Execute system stored procedure

EXEC msdb.dbo.sp_start_job N'Weekly Accounts Payable Transaction History';

 

/**** To perform certain actions SQLAgentOperatorRole in msdb maybe required. ****/

-- Creating application stored procedure to start SQL Agent job

CREATE PROC sprocStartMonthlyInventoryJob

AS

EXEC msdb.dbo.sp_start_job N'Monthly Inventory Processing';

GO

-- Execute t-sql stored procedure

EXEC sprocStartMonthlyInventoryJob

GO

 

Job related T-SQL scripts:  

 

-- STOP a currently executing job - sql server agent stored procedure

EXEC msdb.dbo.sp_stop_job N'NightlyInventoryFeed' ;

 

-- Get job INFO on application job - execute system stored procedure

EXEC msdb.dbo.sp_help_job

    @job_name = N'FinanceBackup',

    @job_aspect = N'ALL' ;

GO

-- SQL Server system job INFO - t sql stored procedure

EXEC msdb.dbo.sp_help_job

      @job_name = N'syspolicy_purge_history',

      @job_aspect = N'ALL' ;

GO

/* Partial results

 

job_id                                    originating_server name                enabled

4C004358-62E0-4933-9268-90F54EF36AA9      DELLSTAR\SQL2008  syspolicy_purge_history 1

 

step_id     step_name                                 subsystem

1           Verify that automation is enabled.        TSQL

2           Purge history.                            TSQL

3           Erase Phantom System Health Records.      PowerShell

 

schedule_id schedule_name                       enabled

8           syspolicy_purge_history_schedule    1

 

server_id   server_name enlist_date             last_poll_date    last_run_date

0     DELLSTAR\SQL2008  1998-11-13 00:00:00.000 1998-11-13 00:00:00.000 20090214

 

*/

-- Check run status of a job

-- SQL Server 2008 T-SQL - Running = 1 means currently executing

DECLARE @job_id uniqueidentifier = '4C004358-62E0-4933-9268-90F54EF36AA9' 

EXEC master.dbo.xp_sqlagent_enum_jobs 1, sa, @job_id

 
------------
-- SQL Server basic job history information for rolling month

------------
SELECT
   JobName,
         RunTime,
         Duration,
         Status,
         Server
FROM     (SELECT JobName = job_name,
                 RunTime = run_datetime,
                 Duration = SUBSTRING(run_duration,1,2) + ':' +
                            SUBSTRING(run_duration,3,2) + ':' +
                            SUBSTRING(run_duration,5,2),
                 Status = run_status,
                 Server = [server]
          FROM   (SELECT j.name AS job_name,
                         run_datetime = CONVERT(DATETIME,RTRIM(run_date)) +
                         (run_time * 9 + run_time%10000 * 6 +
                          run_time%100 * 10) / 2160000,
                         run_duration = RIGHT('000000' +
                         CONVERT(VARCHAR(6),run_duration), 6),
                         run_status = CASE run_status
                                        WHEN 0 THEN 'Failure'
                                        WHEN 1 THEN 'Success'
                                        WHEN 2 THEN 'Retry'
                                        WHEN 3 THEN 'Cancelled'
                                        WHEN 4 THEN 'Running'
                                        ELSE 'Other: ' +
                                        Convert(VARCHAR,run_status)
                                      END,
                         server
                  FROM   msdb.dbo.sysjobhistory h
                         INNER JOIN msdb.dbo.sysjobs j
                           ON h.job_id = j.job_id
                  WHERE  step_id = 0) x) z
WHERE    DATEDIFF(mm,RunTime,getdate()) < 1

ORDER BY RunTime DESC
------------

------------

-- SQL stored procedure simple syntax - create t sql stored procedure

------------

USE AdventureWorks2008;

GO

CREATE PROCEDURE sprocSalesYearXtabQuarter

AS

BEGIN

SET NOCOUNT ON -- turn off rows affected messages

SELECT YEAR = YEAR(OrderDate),

       COALESCE(CONVERT(VARCHAR,SUM(CASE

                        WHEN DATEPART(QQ,OrderDate) = 1 THEN TotalDue

                                    END),1),'') AS 'Q1',

       COALESCE(CONVERT(VARCHAR,SUM(CASE

                        WHEN DATEPART(QQ, OrderDate) = 2 THEN TotalDue

                                    END),1),'') AS 'Q2',

       COALESCE(CONVERT(VARCHAR,SUM(CASE

                        WHEN DATEPART(QQ, OrderDate) = 3 THEN TotalDue

                                    END),1),'') AS 'Q3',

       COALESCE(CONVERT(VARCHAR,SUM(CASE

                        WHEN DATEPART(QQ, OrderDate) = 4 THEN TotalDue

                                    END),1),'') AS 'Q4'

 

FROM  Sales.SalesOrderHeader soh

GROUP BY YEAR(OrderDate)

ORDER BY YEAR(OrderDate)

END -- sproc definition

GO

-- SQL test stored procedure with no parameters - sql execute stored procedure

EXECUTE [AdventureWorks2008].[dbo].sprocSalesYearXtabQuarter

/*

YEAR  Q1                Q2                Q3                Q4

2001                                      5,294,961.92      7,671,148.64

2002  6,678,449.12      7,430,122.29      12,179,372.04     9,798,486.39

2003  7,738,309.35      9,727,845.55      16,488,806.73     15,192,201.07

2004  12,824,418.47     16,262,217.91     50,840.63  

*/

------------

The World Leader in SQL Server 2008 Training
The future is just a CLICK away. Your future!
 
SQLUSA.com Home Page

Copyright 2005-2010, SMI Corp. All Rights Reserved.

SQL Server 2008 is a program product of Microsoft Corporation.
SQL Server 2005 is a program product of Microsoft Corporation.
SQL Server 2000 is a program product of Microsoft Corporation.