1

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 イベントの間に表示されるすべてのレコードを識別する必要があります。

さらに、パッケージの 1 つのインスタンスを分析できるように、特定の executionid のみを使用するようにフィルター処理する必要があります (単一の executionid を識別することができる特定の sourceid および PackageEnd イベントの id 列の最大値を簡単に使用できます)。

これは私の知識領域から少し外れているため、これを SQL ステートメントにまとめる方法についてのアイデアはありますか?

4

0 に答える 0