2015-03-31 5 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

То есть широкая тема. Что вы пробовали и где вы застряли? –

+0

Я собираюсь сделать с обработчиками событий OnPostExecute, и в этом я могу регистрировать только данные о пакете и задаче, но не детали контейнера. Вы знаете, как это достичь. таблица должна иметь всю информацию, такую ​​как package, container, task –

+0

Каждый объект SSIS имеет обработчики событий. Если вам нужно перейти на уровень Задачи, поместите обработчик событий в событие OnError для каждой задачи. Для тех, которые не являются ошибками, вы можете использовать обработчик PostExecute для каждой задачи. –

ответ

1

Я получил это с помощью OnPreExecute, OnError handlers.i Event выбрали это обработчиков событий на уровне пакета и создали одну переменную :: Container (строка) .Select пакета и генерировать эти два обработчика событий.

Используется следующий скрипт в Execute SQL Task -> OnPreExecute Event.

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 Event

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 

 Смежные вопросы

  • Нет связанных вопросов^_^