Написание собственного поставщика журналов в SSIS

В настоящее время я работаю с Microsoft SSIS и SQL Server 2008, и я хотел бы записывать журналы в файл, используя:

  • Конкретный шаблон журнала : Форматированная дата - Уровень журнала : Сообщение журнала
  • Конкретные уровни журнала
  • Коды ошибок, связанные с сообщениями об ошибках в файле конфигурации

Я бродил по Интернету в поисках решения своей проблемы и подумывал о написании собственного поставщика журналов для SSIS.

Кто-нибудь знает, как это сделать, или даже пытаться это просто огромная трата времени?

Спасибо за вашу помощь


person Nazim    schedule 13.01.2010    source источник


Ответы (3)


Что касается ведения журнала SSIS:

Мы используем ведение журнала, предоставляемое службами SSIS, в базе данных, которая содержит метаданные обо всех наших пакетах служб SSIS, разработанные нашим экспертом по службам SSIS. Это позволяет нам легко получить корпоративный стандарт того, какие действия регистрируются, и использовать преимущества работы, проделанной Microsoft для создания системы ведения журналов. Однако данные журнала относительно сложно читать, поэтому наш архитектор написал парсер на C#, чтобы вывести данные в таблицу со структурой, которую нам нужно видеть. Так что да, я могу сказать вам, что это стоило потраченного времени. Я могу легко прочитать ошибки и шаги, которые были обработаны для любого импорта. У меня есть задача электронной почты, которая запускается при сбое и включает запрос таблицы для этого запуска, чтобы сотрудник службы поддержки, который должен исследовать сбой, мог просто запустить код в электронном письме, чтобы узнать, что произошло. Это значительно сократило время на исследование и исправление ошибок.

Чтобы добавить дополнительную информацию в ответ на комментарий Назима: это довольно сложная база данных, но она включает в себя такие вещи, как тип импорта/экспорта, имя файла, местоположение файла, с которым он связан, частота , столбцы в файле и тип данных, которые он должен содержать (используется для проверки правильности формата файла, поскольку известно, что клиенты изменяют их без предупреждения). Мы используем много этой информации как переменные в самих пакетах. Затем, когда пакет запускается, мы записываем сведения об этом запуске в таблицу сведений, которая включает проанализированные данные и идентификатор экземпляра (который изначально заполняется в первой задаче каждого пакета для каждого запуска и связан с идентификатором пакета). Затем последняя задача в пакете записывает время окончания и успешный статус (или, если она выдает ошибку, у нас есть задача, которая завершает экземпляр с неудачным статусом). Трудно описать, поскольку у нас есть более 20 таблиц в базе данных, а конкретный дизайн является проприетарным. Если вы хотите разработать свой собственный, просто подумайте обо всех данных, которые могут быть полезны в качестве переменных, обо всех данных, которые могут быть полезны для устранения неполадок, и обо всех данных, которые вам могут понадобиться для запуска управленческих отчетов о процессах импорта и экспорта. .

person HLGEM    schedule 13.01.2010
comment
Привет, спасибо за ваш ответ. Не могли бы вы привести пример метаданных о ваших пакетах SSIS? - person Nazim; 13.01.2010

Как упомянул выше Джеймс, в службах SSIS есть очень хорошие встроенные возможности ведения журналов: в MSDN. В моем последнем клиенте они хотели регистрировать определенную информацию, как и вы, и для этого мы создали настраиваемые файлы журналов, используя задачи сценария в soem обработчиков событий пакета. Некоторые из наиболее часто используемых обработчиков событий — OnPreExecute, OnPostExecute и OnError. Задачи сценария позволяют вам получить доступ к библиотекам .NET, которые позволяют вам создать файл журнала и добавить в него любую информацию, которую вы считаете необходимой. В переменных пакета хранится много полезной информации, которую можно использовать в задаче сценария, например время выполнения, имя пользователя, время запуска и т. д.

person rfonn    schedule 13.01.2010

Я немного изучил это и пришел к выводу, что, вероятно, лучше использовать встроенные возможности ведения журнала SSIS.

Если вы хотите настроить его специально, рассмотрели ли вы возможность ведения журнала в таблицу SQL, а затем, возможно, запрашиваете эту таблицу таким образом, чтобы выводить журналы в нужном вам формате?

person James Wiseman    schedule 13.01.2010