Событие SSIS OnPostExecute: как увидеть результат выполнения?
Я записываю активность задачи SQL в свою собственную таблицу, используя OnPreExecute и OnPostExecute, которая работает нормально. Вот код OnPreExecute:
declare @audit_key int = ?
declare @package_name varchar(100) = ?
declare @task_name varchar(100) = ?
insert into fct.audit_avetmiss_detail
(audit_key
,package_name
,task_name
,processing_start
, running_flag
)
select @audit_key, @package_name, @task_name, getdate(),1
..и OnPostExecute
declare @audit_key int = ?
declare @package_name varchar(100) = ?
declare @task_name varchar(100) = ?
declare @rows_source int = ?
declare @rows_inserted int = ?
declare @rows_discarded int = ?
declare @rows_updated int = ?
update fct.audit_avetmiss_detail
set Processing_end= getdate()
, running_flag = 0
, rows_source = @rows_source
, rows_inserted = @rows_inserted
, rows_discarded = @rows_discarded
, rows_updated = @rows_updated
where audit_key=@audit_key
and Package_name=@package_name
and Task_name=@task_name
Как получить доступ к результату выполнения "Success" или "Failure" в OnPostExecute?
1 ответ
В общем, вы должны использовать системные переменные, чтобы получить результат выполнения и возникшую ошибку (если она существует), но на основе официальной документации OnPostExecute
Обработчик событий не имеет доступа к системным переменным, которые возвращают результат выполнения или описание ошибки.
@ [System:: ExecutionStatus]: обработчик события OnExecStatusChanged
@[System::ErrorCode]: обработчик события OnError
Может быть, вы должны регистрировать ошибки, когда они произошли OnError
обработчик событий, тогда вы будете считать, что пакет не удался. И не используйте OnPostExecute
войти в пакет успешно. Вместо этого добавьте Execute SQL Task
в конце пакета управления потоком. Затем, если все компоненты успешны, он будет выполнен и проверяет успешность пакета.
Для получения дополнительной информации обратитесь к следующей документации: