2017-04-10 21 views
0

SQL Serverにログオンするように構成されたSSISパッケージがあります。パッケージを構成すると、MyDatabase > System Tables > dbo.sysssislogsysssislog実行IDをSSISエージェントジョブ履歴にリンクします。

のテーブルが作成されます。このテーブルのスキーマはidentically named table held in msdbです。このテーブル内

は、各パッケージの実行は以下のように定義される固有executionid有する:

UNIQUEIDENTIFIERを

ログエントリを生成した実行可能ファイルの実行インスタンスのGUID

これは、SSISパッケージが実行され、次の内に保持されるたびに生成されます。system variableSystem::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のジョブ情報や履歴を取得するために、様々なSQL Server Agent Job Stored Proceduresを使用しています。たとえば:

job_id         job_name  run_date run_time run_duration 
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170410 111145 16 
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170410 111200 1 
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170410 111145 15 
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170405 133855 16 
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170405 133910 1 
52916CFE-A652-4AAA-A052-738E4B349966 MyJobName 20170405 133855 15 

私はSSISのジョブ履歴の概要を示して自分のアプリケーションにおけるETLの管理ページを構築しています:

EXEC msdb.dbo.sp_help_jobhistory 
    @job_name = N'MyJobName', 
    @step_id = null  
GO 

は、(列の概要、1つの実行= 3行)を生成しますログは、ユニークなexecutionidに基づいて、さまざまなエージェントジョブシステムストアドプロシージャから返されたジョブ履歴に基づいて、ログをリンクする方法を見つけることができません。

executionidsysssislogからエージェントジョブの実行履歴に対して保持する方法はありますか?私が思いつくことができる最高のものは、エージェントのジョブ統計に時間的に最も近いログを特定するために日付/時刻マッチングを使用することです。

System::ExecutionInstanceGUIDをスクリプトジョブを使用してカスタムジョブを起動してエージェントジョブの履歴に記録してみましたが、それ以降のバージョンのSQL Serverを使用している顧客に展開するとスクリプトタスクを使用できません。

に注意してください。すべての解決策は2008R2と互換性がある必要があります。

+0

が何らかの有益な情報があるかどうかを確認するには、このリンクをチェックアウト...のhttp://troywitthoeft.com/simple-ssis-package-monitoring-for- sql-server-2008/ – nscheaffer

+0

@nscheafferさん、リンクをありがとうございます。 – Tanner

答えて

0

私は次のような解決策になりました。これは、最も優れたパフォーマンスではありませんでしたが、私が持っていた要件を満たしていました。私は最後にnの2つのパラメータで指定された私のssisパッケージの実行の数を欲しかった。私は自分のアプリケーションによって呼び出されるストアドプロシージャで、このコードを保持:

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 

それはtop 1 execution idを取得しますsysssislogsテーブルから、ジョブが実行されるたびに存在する[event] = ('PackageStart')でフィルタリングし、starttimeは、エージェントジョブが記録した>=LastRunDateである必要があります。

それは、このような結果生成:

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 
関連する問題