我有一個配置爲登錄到SQL Server的SSIS包。在配置了軟件包後,會創建一個系統表:MyDatabase > System Tables > dbo.sysssislog
將sysssislog executionid鏈接到SSIS代理作業歷史記錄
此表的模式與identically named table held in msdb匹配。
在這個表中,每個包執行具有獨特executionid
,其被定義爲:
唯一標識符
生成日誌條目中的可執行程序的執行實例的GUID
每次運行SSIS包時都會生成以下內容system variable: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
在我的應用我使用各種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
的日誌鏈接到從各種代理作業系統存儲過程返回的作業歷史記錄。
有沒有辦法將executionid
從sysssislog
鏈接到針對代理作業執行歷史的信息?我能想到的最好的方法是使用日期/時間匹配來識別與代理作業統計最接近的日誌。
我已看過使用腳本任務並觸發自定義事件以將System::ExecutionInstanceGUID
記錄到代理作業歷史記錄,但我無法使用腳本任務,因爲部署到使用更高版本的SQL Server的客戶時無法使用腳本任務。請注意0,任何解決方案都需要與2008R2兼容。
看看這個鏈接,查看是否有任何有用的信息有... HTTP://troywitthoeft.com/simple-ssis-package-monitoring-for- sql-server-2008/ – nscheaffer
@nscheaffer感謝您的鏈接,請看看。 – Tanner