Dependencies for Stored procedure: msdb.dbo.usp_WaitForJobs

ReferencingFQN ReferencingType ReferencedFQN ReferencedType Depth RedHierarchy
msdb.dbo.usp_WaitForJobs Stored procedure msdb.dbo.sysjobs_view View 1 [msdb].[dbo].[sysjobs_view]
msdb.dbo.usp_WaitForJobs Stored procedure Util.dbo.PrintLargeText Stored procedure 1 [Util].[dbo].[PrintLargeText]
msdb.dbo.usp_WaitForJobs Stored procedure Util.dbo.StringConcat Aggregate function (CLR) 1 [Util].[dbo].[StringConcat]
msdb.dbo.sysjobs_view View msdb.dbo.sysjobs Table 2 [msdb].[dbo].[sysjobs_view], [msdb].[dbo].[sysjobs]
msdb.dbo.sysjobs_view View msdb.dbo.sysjobservers Table 2 [msdb].[dbo].[sysjobs_view], [msdb].[dbo].[sysjobservers]
msdb.dbo.sysjobs_view View msdb.dbo.sysoriginatingservers_view View 2 [msdb].[dbo].[sysjobs_view], [msdb].[dbo].[sysoriginatingservers_view]
Util.dbo.PrintLargeText Stored procedure Util.dbo.PrintLargeText_CLR Assembly (CLR) stored-procedure 2 [Util].[dbo].[PrintLargeText], [Util].[dbo].[PrintLargeText_CLR]
Util.dbo.StringConcat Aggregate function (CLR) Util.UtilClr ASSEMBLY 2 [Util].[dbo].[StringConcat], [Util].[UtilClr]
msdb.dbo.sysoriginatingservers_view View msdb.dbo.sysoriginatingservers Table 3 [msdb].[dbo].[sysjobs_view], [msdb].[dbo].[sysoriginatingservers_view], [msdb].[dbo].[sysoriginatingservers]

Stored procedure: msdb.dbo.usp_WaitForJobs

CREATE PROCEDURE dbo.usp_WaitForJobs
    @JobName_01 VARCHAR(256) = NULL,
    @JobName_02 VARCHAR(256) = NULL,
    @JobName_03 VARCHAR(256) = NULL,
    @JobName_04 VARCHAR(256) = NULL,
    @JobId_01 UNIQUEIDENTIFIER = NULL,
    @JobId_02 UNIQUEIDENTIFIER = NULL,
    @JobId_03 UNIQUEIDENTIFIER = NULL,
    @JobId_04 UNIQUEIDENTIFIER = NULL,
    @WaitSeconds TINYINT = 5,
    @MaxWaitCount INT = 1000,
    @PrintSQL BIT = 0,
    @ExecuteSQL BIT = 1,
    @RaiseError BIT = 1
AS
DECLARE @DelayStr VARCHAR(30) = '00:00:' + RIGHT('0' + CAST(@WaitSeconds AS VARCHAR), 2),
    @SQL VARCHAR(MAX) ;
WITH    SQL
          AS (SELECT    '        EXEC msdb.dbo.usp_GetJobExecutionStatus
            @job_id = '''
 + JobId + ''',
            @execution_status = @execution_status OUTPUT,
            @is_sysadmin = @is_sysadmin
        IF @execution_status <> 4
            BEGIN
                SELECT  @StatusDescription = ''Job: '
 + name + ' (' + JobId + '), Status: ''
                        + CAST(@execution_status AS VARCHAR) + '', Description: ''
                        + CASE @execution_status
                            WHEN 0 THEN ''Returns only those jobs that are not idle or suspended''
                            WHEN 1 THEN ''Executing''
                            WHEN 2 THEN ''Waiting for thread''
                            WHEN 3 THEN ''Between retries''
                            WHEN 4 THEN ''Idle''
                            WHEN 5 THEN ''Suspended''
                            WHEN 7 THEN ''Performing completion actions''
                            ELSE ''UNKNOWN''
                          END + '', Time: '' + CONVERT(VARCHAR(30), GETDATE(), 109)
                PRINT @StatusDescription
                WAITFOR DELAY '''
 + @DelayStr + '''
                CONTINUE
            END
'
 AS SQL
              FROM      msdb.dbo.sysjobs_view (NOLOCK)
              CROSS APPLY (SELECT CAST( JOB_ID AS VARCHAR (256)) AS JobId) j
              WHERE     name LIKE @JobName_01
                        OR name LIKE @JobName_02
                        OR name LIKE @JobName_03
                        OR name LIKE @JobName_04
                        OR job_id IN (@JobId_01, @JobId_02, @JobId_03, @JobId_04))
    SELECT  @SQL = 'DECLARE @execution_status INT = -1,
    @StatusDescription VARCHAR(1000),
    @Error VARCHAR(1000),
    @MaxWaitCount int = '
 + CAST(@MaxWaitCount AS VARCHAR) + ',
    @CurrentWaitCount int = 0,
    @is_sysadmin INT = ISNULL(IS_SRVROLEMEMBER(N''sysadmin''), 0)

WHILE @execution_status <> 4
    BEGIN
        IF @MaxWaitCount <= @CurrentWaitCount
            BEGIN
                SET @Error = ''MaxWaitCount ('
 + CAST(@MaxWaitCount AS VARCHAR)
            + ') reached, Time: '' + CONVERT(VARCHAR(30), GETDATE(), 109)
                RAISERROR(@Error, 16, 1)
                BREAK
            END
        SET @CurrentWaitCount = @CurrentWaitCount + 1
'
 + Util.dbo.StringConcat(SQL, '
'
) + '
    END
'

    FROM    SQL
OPTION  (RECOMPILE)

IF @SQL <> ''
    BEGIN
        IF @PrintSQL = 1
            EXEC Util.dbo.PrintLargeText
                @SQL

        IF @ExecuteSQL = 1
            EXEC(@SQL)
    END
ELSE
    BEGIN
        IF @RaiseError = 1
            RAISERROR('usp_WaitForJobs. No job found!', 16, 1)
        RETURN 10
    END
RETURN 0

Description for Stored procedure: msdb.dbo.usp_WaitForJobs

Todo
Site Map | Printable View | © 2008 - 2012 NuRoN Consulting, INC | Powered by mojoPortal | HTML 5 | CSS | Original design by Andreas Viklund
Share This Using Popular Bookmarking Services