如何将每个容器和任务详细信息记录到SSIS中的表中

时间:2015-03-31 07:43:35

标签: ssis business-intelligence ssis-2012 msbi

我有一个包含几个容器的包,每个容器都有多个任务,如下所示。

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

如果在任何特定任务中发生任何错误,它应该在表中的错误列中记录错误描述。请帮助我如何通过事件处理程序或登录ssis来实现此目的。

1 个答案:

答案 0 :(得分:1)

我通过使用OnPreExecute得到了这个,OnError事件处理程序。我已经选择了包级别上的事件处理程序,并创建了一个变量:: 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