Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 失败的SQL代理作业的报告_Sql Server_Tsql_Common Table Expression_Sql Agent - Fatal编程技术网

Sql server 失败的SQL代理作业的报告

Sql server 失败的SQL代理作业的报告,sql-server,tsql,common-table-expression,sql-agent,Sql Server,Tsql,Common Table Expression,Sql Agent,我正在尝试编写一个SQL Server查询,该查询将返回过去XX分钟/天内失败的作业等 我基本上希望每个失败的作业都有一个记录,每个步骤都有一个消息串联。我已经编写了下面的查询,但是由于分组的原因,我得到了整个作业的一条连接消息,而不仅仅是这个特定实例,我无法计算出来。如有任何协助,将不胜感激: WITH failedJobs AS ( SELECT j.name , DATEADD(SECOND,

我正在尝试编写一个SQL Server查询,该查询将返回过去XX分钟/天内失败的作业等

我基本上希望每个失败的作业都有一个记录,每个步骤都有一个消息串联。我已经编写了下面的查询,但是由于分组的原因,我得到了整个作业的一条连接消息,而不仅仅是这个特定实例,我无法计算出来。如有任何协助,将不胜感激:

WITH    failedJobs
          AS ( SELECT   j.name ,
                        DATEADD(SECOND,
                                ( run_time / 10000 ) * 3600 + ( ( run_time - ( ( run_time / 10000 ) * 10000 ) ) / 100 )
                                * 60 + run_time - ( ( run_time / 100 ) * 100 ),
                                CONVERT(DATETIME, CONVERT(VARCHAR(8), run_date), 105)) AS run_datetime ,
                        js.step_name ,
                        jh.job_id ,
                        jh.step_id ,
                        jh.instance_id ,
                        jh.sql_severity ,
                        jh.message
               FROM     msdb.dbo.sysjobs AS j
               INNER JOIN msdb.dbo.sysjobsteps AS js ON js.job_id = j.job_id
               INNER JOIN msdb.dbo.sysjobhistory AS jh ON jh.job_id = j.job_id
               WHERE    jh.run_status = 0)
     SELECT fj.job_id ,
            STUFF(( SELECT  CHAR(10) + message
                    FROM    failedJobs fj2
                    WHERE   fj.job_id = fj2.job_id
                  FOR
                    XML PATH('') ), 1, 1, '') AS message
     FROM   failedJobs fj
     WHERE  DATEDIFF(DAY, run_datetime, GETDATE()) <= 2 -- Last 2 days
     GROUP BY fj.job_id; 

您是否可以将您得到的输出与您在问题中期望的输出相加?因此您不希望看到成功步骤的输出?也许您想添加jh.sql\u严重性0,您只看到失败的步骤。您能添加您得到的输出,而不是您在问题中期望的输出吗?所以您不想看到成功步骤的输出?也许您想添加jh.sql\u严重性0,因为您只看到失败的步骤。