国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

【xp_sqlagent_enum_jobs】取得SQL Server 作業執行狀態的存儲過程。

2024-08-31 00:49:04
字體:
來源:轉載
供稿:網友

xp_sqlagent_enum_jobs是微軟未公開的存儲過程,用于取得作業的相關信息,在自己進行調度處理多作業時,用它來判斷作業的執行情況再合適不過了。
create table #help_job(
    job_id uniqueidentifier not null,
    last_run_date int not null,
    last_run_time int not null,
    next_run_date int not null,
    next_run_time int not null,
    next_run_schedule_id int not null,
    requested_to_run int not null, -- bool
    request_source int not null,
    request_source_id sysname null,
    running int not null, -- bool
    current_step int not null,
    current_retry_attempt int not null,
    job_state int not null
)--判斷作業是否正在運行
    while @job_run_flag = 1
    begin
        --刪除臨時表信息
        delete #help_job
        --添加信息
        insert into #help_job
        execute master.dbo.xp_sqlagent_enum_jobs 1, 'sa'
       
        if exists (select * from  msdb.dbo.sysjobs a,#help_job b where a.job_id=b.job_id and a.name='job1' and b.job_state = 4 and b.request_source_id is null)
        begin
            set @job_run_flag = 0
        end
        else
        begin
            --延時一分鐘
            waitfor delay '000:01:00'
        end

    end

    --執行其他作業
    exec msdb.dbo.sp_start_job @job_name = 'job1'

    --更新服務器狀態
    --update sys_server set updateflag = 0 where pid = @pid
    set @job_run_flag = 1
b.request_source_id is null一定要加上,否則多次啟動同一個作業的時候有可能報錯。

我的存儲過程,大家可以借鑒一下

 

create procedure proc_pmis_main
as

--更新準備
exec proc_pmis_updateready

--臨時表
create table #help_job(
    job_id uniqueidentifier not null,
    last_run_date int not null,
    last_run_time int not null,
    next_run_date int not null,
    next_run_time int not null,
    next_run_schedule_id int not null,
    requested_to_run int not null, -- bool
    request_source int not null,
    request_source_id sysname null,
    running int not null, -- bool
    current_step int not null,
    current_retry_attempt int not null,
    job_state int not null
)

--作業是否正在運行
 --1:正在運行;0:未運行
declare @job_run_flag int
set @job_run_flag = 1
declare @pid int
--循環提取數據
declare area_cursor cursor for
select pid from sys_server where updateflag = 1 and useflag = 1 order by pid

open area_cursor
fetch next from area_cursor into @pid
while @@fetch_status =0
begin
    --判斷作業是否正在運行
    while @job_run_flag = 1
    begin
        --刪除臨時表信息
        delete #help_job
        --添加信息
        insert into #help_job
        execute master.dbo.xp_sqlagent_enum_jobs 1, 'sa'
       
        if exists (select * from  msdb.dbo.sysjobs a,#help_job b where a.job_id=b.job_id and a.name='job_pmis_synch' and b.job_state = 4 and b.request_source_id is null)
        begin
            set @job_run_flag = 0
        end
        else
        begin
            --延時一分鐘
            waitfor delay '000:01:00'
        end

    end

    --執行同步作業
    exec msdb.dbo.sp_start_job @job_name = 'job_pmis_synch'

    --更新服務器狀態
    --update sys_server set updateflag = 0 where pid = @pid
    set @job_run_flag = 1
    --print (@pid)

    fetch next from area_cursor into @pid
end
close area_cursor
deallocate area_cursor

drop table #help_job
go

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乐山市| 柏乡县| 牟定县| 孝昌县| 玉溪市| 阳原县| 页游| 营山县| 美姑县| 张北县| 汾西县| 瑞安市| 揭东县| 凤凰县| 浏阳市| 登封市| 邵武市| 神池县| 陇南市| 永福县| 上饶县| 定兴县| 西贡区| 保康县| 惠安县| 迭部县| 土默特右旗| 化隆| 上林县| 黔江区| 日土县| 明星| 永宁县| 宝坻区| 鹿泉市| 信宜市| 丘北县| 陆河县| 桑日县| 临西县| 永州市|