select * from msdb..sysjobs

解决方案 »

  1.   

    sp_help_job好像可以,但结果太多,
    能不能从中选出所需的字段呢?我搜索过,没结果,用 select name from  (exec sp_help_job)更不行这个不是要:
    use msdb
    EXEC sp_help_job --〉结果就是和select * from msdb..sysjobs差不多呀用 select name from  (exec sp_help_job)更不行
    不能这样子吧,除非用openrowset,opendatascource,或者直接定义一个实际表或者临时表,insert into后插入
    再select出来
      

  2.   

    有点懂了,不过不一样
    select * 
    from msdb..sysjobs
    where enabled=1
    exec sp_help_job
    -- job_id originating_server name enabled description start_step_id category_id owner_sid notify_level_eventlog notify_level_email notify_level_netsend notify_level_page notify_email_operator_id notify_netsend_operator_id notify_page_operator_id delete_level date_created date_modified version_number
    -- job_id originating_server name enabled description start_step_id category owner     notify_level_eventlog notify_level_email notify_level_netsend notify_level_page notify_email_operator     notify_netsend_operator     notify_page_operator delete_level date_created date_modified version_number last_run_date last_run_time last_run_outcome next_run_date next_run_time next_run_schedule_id current_execution_status current_execution_step current_retry_attempt has_step has_schedule has_target typesp_help_db结果要多一些
    如果没有指定参数,那么 sp_help_job 返回下面的结果集。
    如果指定了 job_id 或 job_name,那么 sp_help_job 针对作业步骤、作业调度及作业目标服务器返回下面这些各自不同的额外的结果集。
      

  3.   

    指定jobid参数后
    sp_help_job '4B7A302D-0501-4C6B-BADE-014347138A20'
    会返回四个结果集,这时如果要"用openrowset,opendatascource,或者直接定义一个实际表或者临时表,insert into后插入再select出来" 好像有困难啊, 行不通
      

  4.   

    可以用sp_helptext看看sp_help_job到底在干什么
    --列出所有的作业IBN20051025
    select J.name 作业名称,
            case freq_type 
                when  1 then '只执行一次' 
                when  4 then '每日' 
                when  8 then '每周' 
                when 16 then '每月'    
                when 32 then '每月'  
                when 64 then '当 SQLServerAgent 服务启动时运行' 
                when 128 then '计算机空闲时运行' 
                 else '' end 频率,
            case freq_type
                when  8 then case  when freq_interval&1 = 1 then '星期日' else '' end +
                             case  when freq_interval&2 = 2 then '星期一' else '' end +
                             case  when freq_interval&4 = 4 then '星期二' else '' end +
                             case  when freq_interval&8 = 8 then '星期三' else '' end +
                             case  when freq_interval&16=16 then '星期四' else '' end +
                             case  when freq_interval&32=32 then '星期五' else '' end +
                             case  when freq_interval&64=64 then '星期六' else '' end 
                when 16 then '第'+ltrim(str(freq_interval))+'天'
                else '' end 指定 ,
            stuff(stuff(right('000000'+ltrim(str(active_start_time)),6),3,0,':'),6,0,':') 启动时间,
            case freq_subday_type
                when 4 then '每'+ltrim(str(freq_subday_interval))+'分钟' 
                when 8 then '每'+ltrim(str(freq_subday_interval))+'小时' 
                else '' end '间隔 ',
            case J.enabled
                when 0 then '禁用'
                when 1 then '启用'
                else '' end '状态'
      from msdb.dbo.sysjobschedules S
     inner join msdb.dbo.sysjobs J on S.job_id = J.job_id
     order by freq_type,启动时间
      

  5.   

    在企业管理器中查看作业属性时,得到的结果很详细,如: id     名称    启用    描述
    -----------------------------------------------------------------------
     2      test1   是      每1天发生,每9个小时,在15:03:00和23:59:59之间.
     4      test2   是      每1周在星期日,星期四发生,在9:00:00.
    如果想自己用T-SQL语句从MSDB中得到这样的结果,该怎么做呢,
    (特别是'描述'这一栏怎样生成)望指点