Sql server 将sysssislog executionid链接到SSIS代理作业历史记录

Sql server 将sysssislog executionid链接到SSIS代理作业历史记录,sql-server,ssis,sql-server-2008-r2,ssis-2008,Sql Server,Ssis,Sql Server 2008 R2,Ssis 2008,我有一个配置为登录到SQL Server的SSIS包。配置包后,将在以下位置创建系统表:MyDatabase>System Tables>dbo.sysssislog 此表具有与匹配的架构 在此表中,每个包执行都有一个唯一的executionid,定义如下: 唯一标识符 生成日志记录项的可执行文件的执行实例的GUID 每次运行SSIS包并将其保存在以下文件中时都会生成此文件:System::ExecutionInstanceGUID 示例日志查询: SELECT [event] ,

我有一个配置为登录到SQL Server的SSIS包。配置包后,将在以下位置创建系统表:
MyDatabase>System Tables>dbo.sysssislog

此表具有与匹配的架构

在此表中,每个包执行都有一个唯一的
executionid
,定义如下:

唯一标识符

生成日志记录项的可执行文件的执行实例的GUID

每次运行SSIS包并将其保存在以下文件中时都会生成此文件:
System::ExecutionInstanceGUID

示例日志查询:

SELECT  [event] ,
        [source] ,
        [executionid] ,
        [starttime] ,
        [endtime]        
FROM    MyDatabase.[dbo].[sysssislog]
WHERE   [event] IN ( 'PackageEnd', 'PackageStart' )
ORDER BY id desc, starttime
产生:

event        source   starttime            endtime              executionid
PackageEnd   Package  2017-04-10 11:12:01  2017-04-10 11:12:01  4EDBF979-5E99-44DB-AA08-839D5DCF3F2F
PackageStart Package  2017-04-10 11:12:01  2017-04-10 11:12:01  4EDBF979-5E99-44DB-AA08-839D5DCF3F2F
PackageEnd   Package  2017-04-05 13:39:11  2017-04-05 13:39:11  9E212747-3CB7-44D8-8728-9E442082DB8B
PackageStart Package  2017-04-05 13:39:11  2017-04-05 13:39:11  9E212747-3CB7-44D8-8728-9E442082DB8B    
在我的应用程序中,我使用各种方法来检索SSIS作业信息和历史记录。例如:

EXEC msdb.dbo.sp_help_jobhistory 
    @job_name = N'MyJobName',
    @step_id = null       
GO
生成(列摘要,1次执行=3行):

我正在我的应用程序中构建一个ETL管理页面,其中显示SSIS作业历史和日志摘要,但我找不到一种方法将基于唯一的
executionid
的日志链接到从各种代理作业系统存储过程返回的作业历史

是否有方法将
sysssilog
中的
executionid
链接到根据代理作业执行历史记录保存的信息?我能想到的最好方法是使用日期/时间匹配来识别在时间上最接近代理作业统计的日志

我已经研究过使用脚本任务和触发自定义事件来将
System::ExecutionInstanceGUID
记录到代理作业历史记录中,但我无法使用脚本任务,因为它在部署到具有更高版本SQL Server的客户时将不起作用


请注意,任何解决方案都需要与2008R2兼容。

我最终得到了以下解决方案,它不是最漂亮、性能最好的,但它满足了我的要求。我想要ssis包的最后n次执行,这是由2个参数指定的。我将此代码保存在应用程序调用的存储过程中:

DECLARE @packageName NVARCHAR(250) = 'MySqlServerAgentJobName',
        @rowsToTake INT = 15;

WITH cte
AS (SELECT TOP 15 msdb.dbo.agent_datetime(h.run_date, h.run_time) AS LastRunDate,
           h.run_status RunStatus,
           h.run_duration RunDurationSeconds,
           (
               SELECT TOP 1 executionid
               FROM [dbo].[sysssislog]
               WHERE starttime >= msdb.dbo.agent_datetime(h.run_date, h.run_time)
                     AND [event] = ('PackageStart')
           ) ExecutionId
    FROM msdb.dbo.sysjobs j
    INNER JOIN msdb.dbo.sysjobhistory h ON j.job_id = h.job_id
    WHERE j.name = @packageName AND h.step_name = '(Job outcome)'
    ORDER BY LastRunDate DESC
   )
SELECT cte.LastRunDate,
       cte.RunStatus,
       cte.RunDurationSeconds,
       cte.ExecutionId
FROM cte
它使用内置函数从代理作业字段解析有效的
datetime

msdb.dbo.agent_datetime(h.run_date, h.run_time) AS LastRunDate
它从
sysssislogs
表中检索
前1个执行id
,在
[事件]=('PackageStart')
上进行过滤,该id在每次执行作业时都存在,并且
开始时间必须是代理作业记录的
=
最后运行日期

它产生如下结果:

LastRunDate              RunStatus  RunDurationSecs  ExecutionId
2017-07-12 12:32:18.000  1          210              99A8A715-890D-4115-975F-AC3DA660770D
2017-07-12 12:00:01.000  1          215              D152C1C6-530F-45D6-B962-41784EC7D9E5
2017-07-12 11:22:13.000  1          204              BBAC73C1-1600-477E-AFC9-1F66D7CFD07A
2017-07-12 10:25:44.000  1          213              A4C69B3C-462B-4000-B2BD-8C9EB47230DA
2017-07-12 10:16:19.000  1          230              3D4D8572-E4CC-4B70-875A-C5D3B513A480
2017-07-12 07:33:21.000  1          244              D8283955-B3EB-4E6D-BFDC-8D7C0D954574
2017-07-11 12:00:00.000  1          211              553FC580-54B2-490C-BB1D-6B1F9BB35C84
2017-07-10 16:21:16.000  1          212              B9A78077-A04C-49AC-A4C6-EF6AB636D862
2017-07-10 16:13:18.000  1          255              DFC853D8-67F5-43CE-B8A4-00B846425C6B
2017-07-10 14:04:00.000  1          217              8C6861B1-6CDE-44FD-8606-18F24F339C05
2017-07-10 13:58:27.000  1          224              5A05011C-9F14-4098-B579-0E75C1E76BDB
2017-07-10 13:53:14.000  1          231              9A2B52FB-2BD4-4FAA-A4A0-40AC48A41326
2017-07-10 13:42:06.000  1          210              9BDBB290-1C84-49ED-87E6-97522DB4AB81
2017-07-10 12:06:44.000  1          215              F4D0A847-F7E4-4F2B-B328-58C387D2C50E
2017-07-10 12:00:01.000  1          241              5EC52369-9832-4718-AF92-2C502D454A41

请查看此链接,看看是否有任何有用的信息…@nscheaffer谢谢您的链接,我们将查看。
LastRunDate              RunStatus  RunDurationSecs  ExecutionId
2017-07-12 12:32:18.000  1          210              99A8A715-890D-4115-975F-AC3DA660770D
2017-07-12 12:00:01.000  1          215              D152C1C6-530F-45D6-B962-41784EC7D9E5
2017-07-12 11:22:13.000  1          204              BBAC73C1-1600-477E-AFC9-1F66D7CFD07A
2017-07-12 10:25:44.000  1          213              A4C69B3C-462B-4000-B2BD-8C9EB47230DA
2017-07-12 10:16:19.000  1          230              3D4D8572-E4CC-4B70-875A-C5D3B513A480
2017-07-12 07:33:21.000  1          244              D8283955-B3EB-4E6D-BFDC-8D7C0D954574
2017-07-11 12:00:00.000  1          211              553FC580-54B2-490C-BB1D-6B1F9BB35C84
2017-07-10 16:21:16.000  1          212              B9A78077-A04C-49AC-A4C6-EF6AB636D862
2017-07-10 16:13:18.000  1          255              DFC853D8-67F5-43CE-B8A4-00B846425C6B
2017-07-10 14:04:00.000  1          217              8C6861B1-6CDE-44FD-8606-18F24F339C05
2017-07-10 13:58:27.000  1          224              5A05011C-9F14-4098-B579-0E75C1E76BDB
2017-07-10 13:53:14.000  1          231              9A2B52FB-2BD4-4FAA-A4A0-40AC48A41326
2017-07-10 13:42:06.000  1          210              9BDBB290-1C84-49ED-87E6-97522DB4AB81
2017-07-10 12:06:44.000  1          215              F4D0A847-F7E4-4F2B-B328-58C387D2C50E
2017-07-10 12:00:01.000  1          241              5EC52369-9832-4718-AF92-2C502D454A41