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


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

Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure

Пользовательские компоненты потока данных могут помещать сообщения в существующую запись журнала с помощью метода 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  

Теперь, когда пользователь выполняет пакет, после выбора параметра "Запись журнала пользовательского компонента" в диалоговом окне Ведение журнала журнал будет содержать запись с четкой меткой "User::My Custom Component Log Entry". Эта новая запись журнала содержит текст инструкции SQL, метку времени и любые дополнительные данные, зарегистрированные разработчиком.

См. также

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