2017-04-10 620 views
0

我有一個配置爲登錄到SQL Server的SSIS包。在配置了軟件包後,會創建一個系統表:MyDatabase > System Tables > dbo.sysssislog將sysssislog executionid鏈接到SSIS代理作業歷史記錄

此表的模式與identically named table held in msdb匹配。

在這個表中,每個包執行具有獨特executionid,其被定義爲:

唯一標識符

生成日誌條目中的可執行程序的執行實例的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  

在我的應用我使用各種SQL Server Agent Job Stored Procedures檢索SSIS作業信息和歷史記錄。例如:

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

主要生產(列的總結,執行1 = 3行):

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 

我建立我的應用程序的ETL管理頁面顯示SSIS作業歷史記錄和摘要日誌,但我無法找到一種方法將基於唯一executionid的日誌鏈接到從各種代理作業系統存儲過程返回的作業歷史記錄。

有沒有辦法將executionidsysssislog鏈接到針對代理作業執行歷史的信息?我能想到的最好的方法是使用日期/時間匹配來識別與代理作業統計最接近的日誌。

我已看過使用腳本任務並觸發自定義事件以將System::ExecutionInstanceGUID記錄到代理作業歷史記錄,但我無法使用腳本任務,因爲部署到使用更高版本的SQL Server的客戶時無法使用腳本任務。請注意0​​,任何解決方案都需要與2008R2兼容。

+0

看看這個鏈接,查看是否有任何有用的信息有... HTTP://troywitthoeft.com/simple-ssis-package-monitoring-for- sql-server-2008/ – nscheaffer

+0

@nscheaffer感謝您的鏈接,請看看。 – Tanner

回答

0

我結束了以下解決方案,這不是最漂亮和最高性能,但它滿足了我的要求。我希望最後的n我的ssis軟件包的執行次數,它由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 

它將檢索top 1 execution idsysssislogs表中篩選[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