Написание собственного провайдера логов в SSIS - PullRequest
2 голосов
/ 13 января 2010

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

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 13 января 2010

Что касается входа в систему SSIS:

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

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

2 голосов
/ 13 января 2010

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

0 голосов
/ 13 января 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...