• Here's a handy function which shows the current status of the exec_queue:

    if exists (select 1 from sys.objects where name = 'udf_queue_status')

    drop function dbo.udf_queue_status

    go

    create function dbo.udf_queue_status()

    returns table

    as

    return (

    with cte(total, waiting, running, finished, succeeded, failed)

    as

    (

    select (select count(*) from pmaster..exec_queue) as total

    , (select count(*) from pmaster..exec_queue where worker_start_time is null and worker_end_time is null) as "waiting"

    , (select count(*) from pmaster..exec_queue where worker_start_time is not null and worker_end_time is null) as "running"

    , (select count(*) from pmaster..exec_queue where worker_start_time is not null and worker_end_time is not null) as "finished"

    , (select count(*) from pmaster..exec_queue where return_code = 0) as "succeeded"

    , (select count(*) from pmaster..exec_queue where return_code > 0) as "failed"

    )

    select total, waiting, running, finished, (cast(finished as real) / cast(coalesce(nullif(total,0),1) as real)) * 100 as percent_complete, succeeded, failed

    from cte

    )

    go

    EXECUTE sp_ms_marksystemobject 'udf_queue_status'

    go

    Wilfred
    The best things in life are the simple things