Дублирование записей журнала из-за вложенных контейнеров

Любой простой способ решить проблему, когда у вас есть компонент, и получить один и тот же журнал массажа более одного раза из-за того, что компонент вложен в другие компоненты (например, контейнер и поток данных, например)

enter image description here

Я нашел this , где MS говорит, что он ничего не сделает с этим, а с 2007 года. Я действительно не хочу делать обходное решение, кажется, много работы.

2
nl ja de
См. Ответы на этот вопрос, похожий на ваш: stackoverflow.com/q/2560452/236348
добавлено автор William Salzman, источник
Второй @Billinkc снова откроется. После того, как вы перечитали вопрос более внимательно, Билл прав, мой дубликат-кандидат использует обработчики событий, а Diego просто использует протоколирование.
добавлено автор William Salzman, источник
@WilliamToddSalzman I think Цель Diego состоит в том, чтобы сделать запись из собственного/из окна ведомой так же, как ваша специальная проверка обработчика событий (+1 битва), без необходимости проходить через и установить свойство Propagate на все.
добавлено автор billinkc, источник
Проголосовал за повторное открытие. Дублирующий вопрос применяется к использованию событий SSIS для выполнения действия и как ограничить его только одним использованием. Этот вопрос о том, как можно использовать собственную функцию ведения журнала, чтобы вызвать такое же поведение. Если бы OP выполнял Execute SQL Task в разных обработчиках событий для выполнения регистрации, это было бы дубликатом. Это не так, и я считаю, что вопрос был ошибочно закрыт.
добавлено автор billinkc, источник

1 ответы

Для ведения журнала, если вы решили зарегистрироваться на сервере sql, SSIS создаст Stored Proc (SQL 2005)

Имя проекта: dbo.sp_dts_addlogentry

Название таблицы: dbo.sysdtslog90 (таблица пользователей)

(SQL 2008)

Название Proc: dbo.sp_ssis_addlogentry

Название таблицы: dbo.sysssislog (системная таблица)

Вы можете изменить это, чтобы отфильтровать записи журнала (sql будет воссоздавать его, если он отсутствует, но не будет перезаписывать самостоятельно написанную версию с тем же именем.)

Сгенерированная системой версия представляет собой просто вставку параметров, отправленных в proc по SSIS.

Вы можете добавить логику, чтобы следовать цепочке исполняемого файла, чтобы найти родительские объекты и подавить ведение журнала для записей, которые уже были зарегистрированы (для этого вы хотите обрабатывать имя события OnError в своем коде) Я обычно передаю OnPreExecute, OnPostExecute, OnError, и OnTaskFailed события в мой процесс регистрации. По умолчанию proc также получает события PackageStart и PackageEnd.

При этом я позволяю всем этим журналам полностью перейти к таблице в sql, а затем использовать сводный и подробный отчет для проверки регистрации и просмотра ошибок. Мой отчет фильтрует отображение только одной ошибки для каждого события, а не фильтрацию на входе в файл журнала. Я также регистрирую все свои SSIS-пакеты в одной базе данных для конфигураций и протоколирования, которые включены в каждый пакет SSIS.

3
добавлено
спасибо за информацию о процедуре. Не знал этого. Не думаю, что я могу что-то сделать в proc, потому что он вызывается один раз в строке, поэтому я не могу проверить наличие дубликатов. Единственным решением будет фильтрация по идентификатору компонента, но мне это не нравится. может стать очень грязным. Я думаю, что я буду делать, как вы, и разобраться с этим в отчетах. Благодарю.
добавлено автор Diego, источник
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)