创建分层查询以从日志条目定义SSIS包

时间:2013-06-19 01:49:01

标签: sql-server ssis

我正在创建一个框架,用于从MVC应用程序启动和监视SSIS包。我的大部分都在工作,我只是在尝试改进我的显示器功能,以便我可以在浏览器中显示包的表示。我已经能够创建一个能够唯一标识包的所有“源”组件的查询,但这只是一个平面表示,并且不允许我识别序列及其相关步骤,例如。

我希望能够创建一个SSIS日志表的分层查询,它将提供如下表示:

Package Start
   Step 1
   Sequence A
      Step A1
      Step A2
   Sequence B
      Step B1
      Step B2
   Step 2
   Sequence C
      Step C1
      Step C2
      Step C3
   Step 4
   Step 5
Package End

通过能够创建层次结构,我希望能够在浏览器中创建包的表示,并且与当前不同,只能在平面表中显示它,如结构,我应该能够放置序列中的序列步骤,并为用户提供有关过程所在位置的更好反馈。

我将用于定义包的日志条目示例(我将使用先前运行的实例中的条目来获取定义)如下所示:

    id  event   computer    operator    source  sourceid    executionid starttime   endtime datacode    databytes   message
2478    PackageStart    {MACHINE}               {USER}          Package 3BC68A08-3B6E-4138-BC79-4B124A37FF60    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:56:58.000 2013-06-18 17:56:58.000 0   0x  Beginning of package execution.  
2479    OnPreExecute    {MACHINE}               {USER}          Package 3BC68A08-3B6E-4138-BC79-4B124A37FF60    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:56:58.000 2013-06-18 17:56:58.000 0   0x  
2480    OnPreExecute    {MACHINE}               {USER}          Receive Orders  96FEEE13-2053-4B6F-9EF6-13F063CBED0B    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:56:59.000 2013-06-18 17:56:59.000 0   0x  
2481    OnProgress      {MACHINE}               {USER}          Receive Orders  96FEEE13-2053-4B6F-9EF6-13F063CBED0B    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:06.000 2013-06-18 17:57:06.000 100 0x  Executing query "DECLARE @RowCount INT  SET @RowCount = 0 WHILE @Ro...".
2482    OnPostExecute   {MACHINE}               {USER}          Receive Orders  96FEEE13-2053-4B6F-9EF6-13F063CBED0B    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:06.000 2013-06-18 17:57:06.000 0   0x  
2483    OnPreExecute    {MACHINE}               {USER}          Update Status to Processing 4EE144BF-CA76-4BA5-B0B2-77E0899A22C0    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:06.000 2013-06-18 17:57:06.000 0   0x  
2484    OnProgress      {MACHINE}               {USER}          Update Status to Processing 4EE144BF-CA76-4BA5-B0B2-77E0899A22C0    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:06.000 2013-06-18 17:57:06.000 100 0x  Executing query "UPDATE [dbo].[Order] SET     [Status] = 2 WHERE   ...".
2485    OnPostExecute   {MACHINE}               {USER}          Update Status to Processing 4EE144BF-CA76-4BA5-B0B2-77E0899A22C0    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:06.000 2013-06-18 17:57:06.000 0   0x  
2486    OnPreExecute    {MACHINE}               {USER}          Clear dates before processing orders    BE85B6A1-07D0-41E6-B76D-9554348867A9    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:06.000 2013-06-18 17:57:06.000 0   0x  
2487    OnProgress      {MACHINE}               {USER}          Clear dates before processing orders    BE85B6A1-07D0-41E6-B76D-9554348867A9    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:10.000 2013-06-18 17:57:10.000 100 0x  Executing query "UPDATE [dbo].[Order] SET      [ProcessedDate] = NU...".
2488    OnPostExecute   {MACHINE}               {USER}          Clear dates before processing orders    BE85B6A1-07D0-41E6-B76D-9554348867A9    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:10.000 2013-06-18 17:57:10.000 0   0x  
2489    OnPreExecute    {MACHINE}               {USER}          Process Sequencer   4535503D-3DED-4D12-BE07-431A285A29F3    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:10.000 2013-06-18 17:57:10.000 0   0x  
2490    OnPreExecute    {MACHINE}               {USER}          Set Processed Date  C027DF69-3006-4BB7-8F04-CD04DACF6910    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:10.000 2013-06-18 17:57:10.000 0   0x  
2491    OnProgress      {MACHINE}               {USER}          Set Processed Date  C027DF69-3006-4BB7-8F04-CD04DACF6910    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:15.000 2013-06-18 17:57:15.000 100 0x  Executing query "UPDATE [dbo].[Order] SET     [ProcessedDate] = GET...".
2492    OnPostExecute   {MACHINE}               {USER}          Set Processed Date  C027DF69-3006-4BB7-8F04-CD04DACF6910    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:15.000 2013-06-18 17:57:15.000 0   0x  
2493    OnPreExecute    {MACHINE}               {USER}          Create Pick List    680E0119-20A1-43A7-87F9-F4A0ECB292D0    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:15.000 2013-06-18 17:57:15.000 0   0x  
2494    OnProgress      {MACHINE}               {USER}          Create Pick List    680E0119-20A1-43A7-87F9-F4A0ECB292D0    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:28.000 2013-06-18 17:57:28.000 100 0x  Executing query "INSERT [dbo].[PickList]     ([OrderID]     ,[Picke...".
2495    OnPostExecute   {MACHINE}               {USER}          Create Pick List    680E0119-20A1-43A7-87F9-F4A0ECB292D0    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:28.000 2013-06-18 17:57:28.000 0   0x  
2496    OnPostExecute   {MACHINE}               {USER}          Process Sequencer   4535503D-3DED-4D12-BE07-431A285A29F3    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:28.000 2013-06-18 17:57:28.000 0   0x  
2497    OnPreExecute    {MACHINE}               {USER}          Update Shipping Date    2C9E46A4-FDCE-425B-AC46-666B783CFD44    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:28.000 2013-06-18 17:57:28.000 0   0x  
2498    OnProgress      {MACHINE}               {USER}          Update Shipping Date    2C9E46A4-FDCE-425B-AC46-666B783CFD44    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:32.000 2013-06-18 17:57:32.000 100 0x  Executing query "UPDATE [dbo].[Order] SET     [ShippedDate] = GETUT...".
2499    OnPostExecute   {MACHINE}               {USER}          Update Shipping Date    2C9E46A4-FDCE-425B-AC46-666B783CFD44    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:32.000 2013-06-18 17:57:32.000 0   0x  
2500    OnPostExecute   {MACHINE}               {USER}          Package 3BC68A08-3B6E-4138-BC79-4B124A37FF60    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:32.000 2013-06-18 17:57:32.000 0   0x  
2501    PackageEnd      {MACHINE}               {USER}          Package 3BC68A08-3B6E-4138-BC79-4B124A37FF60    086AEB95-717E-4EED-850F-A403BF4D4B0D    2013-06-18 17:57:32.000 2013-06-18 17:57:32.000 0   0x  End of package execution.  

我之前创建的查询在表中具有字段的父子关系,但为此我需要识别出在相同sourceid的PackageStart和PackageEnd或OnPreExecute和OnPostExecute事件之间出现的所有记录。 / p>

这还需要进行过滤以仅使用特定的executionid,以便分析包的一个实例(对于给定的sourceid,可以轻松地在id列上使用max,并且可以识别单个executionid的PackageEnd事件)。

关于如何在SQL语句中将其拼凑在一起的任何想法,因为现在这有点超出我的知识领域?

0 个答案:

没有答案