2015-03-31 14 views
0

我有一個包含多個容器的包,每個容器在其中包含多個任務,如下所示。如何將每個容器和任務詳細信息記錄到SSIS中的表中

enter image description here

包執行過程中,我需要每個容器和任務的細節登錄到表像的下方。

LogID Container  Task      Status Error          LoggedOn 
1  SEQ - Customer truncate customer table  SUCCESS            2015-03-31 02:22:50.267 
2  SEQ - Customer create temp table to store SUCCESS            2015-03-31 02:22:50.267 
3  SEQ - Customer DF - Loading Customers  SUCCESS            2015-03-31 02:22:50.267 
4  SEQ - Customer Validating Customers  FAILED Failed to convert from varchar to bigint 2015-03-31 02:22:50.267 

如果在任何特定的任務發生任何錯誤,它應該記錄在table.Please錯誤列錯誤描述幫助我如何通過事件處理程序或SSIS登錄到實現這一目標。

+0

這是一個廣泛的話題。你有什麼嘗試,你卡在哪裏? – 2015-03-31 14:47:38

+0

我正在考慮使用OnPostExecute事件處理程序,在此我只能記錄程序包和任務詳細信息,但不能記錄容器詳細信息。你有什麼想法如何實現這一點。 表應該包含所有信息,如包,容器,任務 – 2015-04-01 08:35:14

+0

每個SSIS對象都有事件處理程序。如果您需要深入到任務級別,請將事件處理程序放入每個任務的OnError事件中。對於那些沒有錯誤的,你可以使用每個任務的PostExecute處理程序。 – 2015-04-01 13:33:27

回答

1

我通過使用OnPreExecute,OnError事件處理程序.i選擇了這個事件處理程序程序包級別並創建了一個變量:: Container(string)。選擇程序包並生成這兩個事件處理程序。

在執行SQL任務 - > OnPreExecute事件中使用以下腳本。

SourceDescription-- Input 
PackageName-- Input 
Container-- Input 
SourceName-- Input 
Container-- Output 

DECLARE @TaskType VARCHAR(500),@Package VARCHAR(500),@Container VARCHAR(500),@Task varchar(500) 
SELECT @TaskType = ?,@Package =?,@Container= ?,@Task = ? 

IF(@TaskType ='Sequence Container') 
BEGIN 
    SET @Container = @Task 
END 
ELSE IF(@Package <>@Task) 
BEGIN 
    INSERT INTO LogTable(Package,Container,Task,Status) 
    SELECT @Package,@Container,@Task,'SUCCESS' 
END 

SET ? = @Container 

及以下腳本onerror事件

SourceDescription-- Input 
PackageName-- Input 
Container-- Input 
SourceName-- Input 
ErrorDescription--Input 

DECLARE @TaskType VARCHAR(500),@Package VARCHAR(500),@Container VARCHAR(500),@Task varchar(500),@Error VARCHAR(1000) 
SELECT @TaskType = ?,@Package =?,@Container= ?,@Task = ?,@Error=? 

IF(@TaskType ='Sequence Container') 
BEGIN 
    SET @Container = @Task 
END 
ELSE IF(@Package <>@Task) 
BEGIN 
    INSERT INTO LogTable(Package,Container,Task,Status,Error_Desc) 
    SELECT @Package,@Container,@Task,'FAILED',@Error 
END 
相關問題