Поделиться через


Ведение журнала и определение элементов журнала в компоненте потока данных

Пользовательские компоненты потока данных могут помещать сообщения в существующую запись журнала с помощью метода PostLogMessage интерфейса IDTSComponentMetaData100. Они могут также предоставлять информацию для пользователя с помощью метода FireInformation или подобных методов интерфейса IDTSComponentMetaData100. Однако этот подход создает нагрузку по вызову и обработке дополнительных событий и заставляет пользователя фильтровать многочисленные информационные сообщения в поисках сообщений, которые могут представлять интерес. Можно использовать собственный формат записи журнала, как показано далее, для предоставления пользователям разработанного компонента точно обозначенной информации.

Регистрация и использование пользовательской записи журнала

Регистрация пользовательской записи журнала

Для регистрации пользовательской записи журнала, чтобы ее мог использовать разрабатываемый компонент, нужно переопределить метод RegisterLogEntries базового класса PipelineComponent. В следующем примере проводится регистрация пользовательской записи журнала и передается имя и описание.

using Microsoft.SqlServer.Dts.Runtime;
...
private const string MyLogEntryName = "My Custom Component Log Entry";
private const string MyLogEntryDescription = "Log entry from My Custom Component ";
...
    public override void RegisterLogEntries()
    {
      this.LogEntryInfos.Add(MyLogEntryName,
        MyLogEntryDescription,
        Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSLogEntryFrequency.DTSLEF_CONSISTENT);
    }
Imports Microsoft.SqlServer.Dts.Runtime
...
Private Const MyLogEntryName As String = "My Custom Component Log Entry" 
Private Const MyLogEntryDescription As String = "Log entry from My Custom Component "
...
Public  Overrides Sub RegisterLogEntries() 
  Me.LogEntryInfos.Add(MyLogEntryName, _
    MyLogEntryDescription, _
    Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSLogEntryFrequency.DTSLEF_CONSISTENT) 
End Sub

Перечисление DTSLogEntryFrequency подсказывает во время выполнения, как часто событие будет заноситься в журнал.

  • DTSLEF_OCCASIONAL: Событие заносится в журнал только иногда, но не во время каждого выполнения.

  • DTSLEF_CONSISTENT: Событие заносится в журнал определенное количество раз во время каждого выполнения.

  • DTSLEF_PROPORTIONAL: Событие заносится в журнал несколько раз пропорционально объему выполненной работы.

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

После регистрации собственного формата записи журнала и добавления экземпляра пользовательского компонента в рабочую область конструктора потока данных диалоговое окно Ведение журнала в конструкторе выводит новую запись журнала с именем «Мой собственный формат записи журнала» в списке доступных записей журнала.

Внесение в журнал пользовательской записи

После регистрации пользовательской записи журнала компонент может создавать такие записи в журнале. В приведенном ниже примере пользовательская запись журнала заносится в журнал во время работы метода PreExecute, содержащего текст инструкции SQL, используемой компонентом.

    public override void PreExecute()
    {
      DateTime now = DateTime.Now;
      byte[] additionalData = null;
      this.ComponentMetaData.PostLogMessage(MyLogEntryName,
        this.ComponentMetaData.Name,
        "Command Sent was: " + myCommand.CommandText,
        now, now, 0, ref additionalData);
    }
Public  Overrides Sub PreExecute() 
  Dim now As DateTime = DateTime.Now 
  Dim additionalData As Byte() = Nothing 
  Me.ComponentMetaData.PostLogMessage(MyLogEntryName, _
    Me.ComponentMetaData.Name, _
    "Command Sent was: " + myCommand.CommandText, _
    now, now, 0, additionalData) 
End Sub

Теперь, когда пользователь запустит пакет, после выбора пункта «Мой собственный формат записи журнала» в диалоговом окне Ведение журнала в журнале появится новая запись, явно помеченная как «Пользователь::Мой собственный формат записи журнала». Новая запись в журнале содержит текст инструкции SQL, отметку времени и всю дополнительную информацию, заданную разработчиком.

Значок служб Integration Services (маленький) Будьте в курсе новых возможностей cлужб Integration Services

Чтобы получить новейшую документацию, статьи, образцы и видеоматериалы корпорации Майкрософт, а также лучшие решения участников сообщества, посетите страницу служб Службы Integration Services на сайте MSDN:


Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.

См. также

Основные понятия

Ведение журналов в службах Integration Services (SSIS)