• 【SQL Server 学习系列】-- 查询SQL实例的所有Job


    SELECT     [JobName] = [jobs].[name]
            ,[JobOwner] = SUSER_SNAME(jobs.owner_sid)
            ,[Enabled] = CASE [jobs].[enabled] WHEN 1 THEN 'Yes' ELSE 'No' END
            ,[Scheduled] = CASE [schedule].[enabled] WHEN 1 THEN 'Yes' ELSE 'No' END
            ,[Occurs] = 
                    CASE [schedule].[freq_type]
                        WHEN   1 THEN 'Once'
                        WHEN   4 THEN 'Daily'
                        WHEN   8 THEN 'Weekly'
                        WHEN  16 THEN 'Monthly'
                        WHEN  32 THEN 'Monthly relative'
                        WHEN  64 THEN 'When SQL Server Agent starts'
                        WHEN 128 THEN 'Start whenever the CPU(s) become idle' 
                        ELSE ''
                    END
            ,[Occurs_detail] = 
                    CASE [schedule].[freq_type]
                        WHEN   1 THEN 'O'
                        WHEN   4 THEN 'Every ' + CONVERT(NVARCHAR(2000), [schedule].[freq_interval]) + ' day(s)'
                        WHEN   8 THEN 'Every ' + CONVERT(NVARCHAR(2000), [schedule].[freq_recurrence_factor]) + ' weeks(s) on ' + 
                            LEFT(
                                CASE WHEN [schedule].[freq_interval] &  1 =  1 THEN 'Sunday, '    ELSE '' END + 
                                CASE WHEN [schedule].[freq_interval] &  2 =  2 THEN 'Monday, '    ELSE '' END + 
                                CASE WHEN [schedule].[freq_interval] &  4 =  4 THEN 'Tuesday, '   ELSE '' END + 
                                CASE WHEN [schedule].[freq_interval] &  8 =  8 THEN 'Wednesday, ' ELSE '' END + 
                                CASE WHEN [schedule].[freq_interval] & 16 = 16 THEN 'Thursday, '  ELSE '' END + 
                                CASE WHEN [schedule].[freq_interval] & 32 = 32 THEN 'Friday, '    ELSE '' END + 
                                CASE WHEN [schedule].[freq_interval] & 64 = 64 THEN 'Saturday, '  ELSE '' END , 
                                LEN(
                                    CASE WHEN [schedule].[freq_interval] &  1 =  1 THEN 'Sunday, '    ELSE '' END + 
                                    CASE WHEN [schedule].[freq_interval] &  2 =  2 THEN 'Monday, '    ELSE '' END + 
                                    CASE WHEN [schedule].[freq_interval] &  4 =  4 THEN 'Tuesday, '   ELSE '' END + 
                                    CASE WHEN [schedule].[freq_interval] &  8 =  8 THEN 'Wednesday, ' ELSE '' END + 
                                    CASE WHEN [schedule].[freq_interval] & 16 = 16 THEN 'Thursday, '  ELSE '' END + 
                                    CASE WHEN [schedule].[freq_interval] & 32 = 32 THEN 'Friday, '    ELSE '' END + 
                                    CASE WHEN [schedule].[freq_interval] & 64 = 64 THEN 'Saturday, '  ELSE '' END 
                                ) - 1
                            )
                        WHEN  16 THEN 'Day ' + CONVERT(NVARCHAR(2000), [schedule].[freq_interval]) + ' of every ' + CONVERT(VARCHAR, [schedule].[freq_recurrence_factor]) + ' month(s)'
                        WHEN  32 THEN 'The ' + 
                                CASE [schedule].[freq_relative_interval]
                                    WHEN  1 THEN 'First'
                                    WHEN  2 THEN 'Second'
                                    WHEN  4 THEN 'Third'
                                    WHEN  8 THEN 'Fourth'
                                    WHEN 16 THEN 'Last' 
                                END +
                                CASE [schedule].[freq_interval]
                                    WHEN  1 THEN ' Sunday'
                                    WHEN  2 THEN ' Monday'
                                    WHEN  3 THEN ' Tuesday'
                                    WHEN  4 THEN ' Wednesday'
                                    WHEN  5 THEN ' Thursday'
                                    WHEN  6 THEN ' Friday'
                                    WHEN  7 THEN ' Saturday'
                                    WHEN  8 THEN ' Day'
                                    WHEN  9 THEN ' Weekday'
                                    WHEN 10 THEN ' Weekend Day' 
                                END + ' of every ' + CONVERT(NVARCHAR(2000), [schedule].[freq_recurrence_factor]) + ' month(s)' 
                        ELSE ''
                    END
            ,[Frequency] = 
                    CASE [schedule].[freq_subday_type]
                        WHEN 1 THEN 'Occurs once at ' + 
                                    STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), [schedule].[active_start_time]), 6), 5, 0, ':'), 3, 0, ':')
                        WHEN 2 THEN 'Occurs every ' + 
                                    CONVERT(NVARCHAR(2000), [schedule].[freq_subday_interval]) + ' Seconds(s) between ' + 
                                    STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), [schedule].[active_start_time]), 6), 5, 0, ':'), 3, 0, ':') + ' and ' + 
                                    STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), [schedule].[active_end_time]), 6), 5, 0, ':'), 3, 0, ':')
                        WHEN 4 THEN 'Occurs every ' + 
                                    CONVERT(NVARCHAR(2000), [schedule].[freq_subday_interval]) + ' Minute(s) between ' + 
                                    STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), [schedule].[active_start_time]), 6), 5, 0, ':'), 3, 0, ':') + ' and ' + 
                                    STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), [schedule].[active_end_time]), 6), 5, 0, ':'), 3, 0, ':')
                        WHEN 8 THEN 'Occurs every ' + 
                                    CONVERT(NVARCHAR(2000), [schedule].[freq_subday_interval]) + ' Hour(s) between ' + 
                                    STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), [schedule].[active_start_time]), 6), 5, 0, ':'), 3, 0, ':') + ' and ' + 
                                    STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), [schedule].[active_end_time]), 6), 5, 0, ':'), 3, 0, ':')
                        ELSE ''
                    END
            , [Max Duration] = STUFF(STUFF(REPLACE(STR(maxdur.run_duration, 6, 0), ' ', '0'), 3, 0, ':'), 6, 0, ':')
            , [Last Run Duration] = STUFF(STUFF(REPLACE(STR(lastrun.run_duration, 6, 0), ' ', '0'), 3, 0, ':'), 6, 0, ':')
    FROM     [msdb].[dbo].[sysjobs] AS [jobs] WITh(NOLOCK) 
             LEFT OUTER JOIN [msdb].[dbo].[sysjobschedules] AS [jobschedule] WITh(NOLOCK) 
                     ON [jobs].[job_id] = [jobschedule].[job_id] 
             LEFT OUTER JOIN [msdb].[dbo].[sysschedules] AS [schedule] WITh(NOLOCK) 
                     ON [jobschedule].[schedule_id] = [schedule].[schedule_id] 
            LEFT OUTER JOIN
        (
            SELECT job_id,
                   MAX(run_duration) AS run_duration
            FROM msdb.dbo.sysjobhistory WITH (NOLOCK)
            GROUP BY job_id
        ) maxdur
            ON jobs.job_id = maxdur.job_id
        LEFT OUTER JOIN
        (
            SELECT j1.job_id,
                   j1.run_duration,
                   j1.run_date,
                   j1.run_time,
                   j1.message
            FROM msdb.dbo.sysjobhistory j1 WITH (NOLOCK)
            WHERE instance_id =
            (
                SELECT MAX(instance_id)
                FROM msdb.dbo.sysjobhistory j2 WITH (NOLOCK)
                WHERE j2.job_id = j1.job_id
            )
        ) lastrun
            ON jobs.job_id = lastrun.job_id
    GO
  • 相关阅读:
    VS2015中SharedProject与可移植类库(PCL)项目
    Windows.Web.Http.HttpClient.GetStringAsync 总是返回相同的结果
    博客园新闻WP8.1客户端
    Webpack 2 视频教程 001
    快速零配置迁移 API 适配 iOS 对 IPv6 以及 HTTPS 的要求
    免费的 Vue.js 入门与进阶视频教程
    Webpack 3 中的新特性
    使用可视化图表对 Webpack 2 的编译与打包进行统计分析
    React.js 开发参见问题 Q&A
    官方 React 快速上手脚手架 create-react-app
  • 原文地址:https://www.cnblogs.com/elliot-lei/p/15180898.html
Copyright © 2020-2023  润新知