Compartir vía


Registrar y definir entradas de registro en un componente de flujo de datos

Se aplica a: SQL Server SSIS Integration Runtime en Azure Data Factory

Los componentes de flujo de datos personalizados pueden publicar mensajes en una entrada de registro existente con el método PostLogMessage de la interfaz IDTSComponentMetaData100. También pueden presentar información al usuario con el método FireInformation o métodos similares de la interfaz IDTSComponentMetaData100. Sin embargo, este enfoque supone la sobrecarga de provocar y controlar eventos adicionales y obliga al usuario a buscar los mensajes que le pueden interesar entre todos los mensajes informativos detallados. Puede utilizar una entrada de registro personalizada tal como se describe a continuación para proporcionar información de registro personalizada etiquetada de forma diferenciada a los usuarios del componente.

Registrar y utilizar una entrada de registro personalizada

Registrar una entrada de registro personalizada

Para registrar una entrada de registro personalizada y que la utilice el componente, invalide el método RegisterLogEntries de la clase base PipelineComponent. En el ejemplo siguiente se registra una entrada de registro personalizada y se proporciona un nombre y una descripción.

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  

La enumeración DTSLogEntryFrequency proporciona una sugerencia al motor en tiempo de ejecución sobre la frecuencia con que se registrará el evento:

  • DTSLEF_OCCASIONAL: el evento solamente se registra en ocasiones, no durante cada ejecución.

  • DTSLEF_CONSISTENT: el evento se registra un número constante de veces durante cada ejecución.

  • DTSLEF_PROPORTIONAL: el evento se registra un número de veces proporcional a la cantidad de trabajo completado.

En el ejemplo anterior se utiliza DTSLEF_CONSISTENT porque el componente espera registrar una entrada una vez por ejecución.

Después de registrar la entrada de registro personalizada y agregar una instancia del componente personalizado a la superficie del diseñador de flujo de datos, el cuadro de diálogo Registro del diseñador muestra una nueva entrada de registro con el nombre "My Custom Component Log Entry" en la lista de entradas de registro disponibles.

Registrar en una entrada de registro personalizada

Después de registrar la entrada de registro personalizada, el componente puede registrar los mensajes personalizados. En el ejemplo siguiente se escribe una entrada de registro personalizada durante el método PreExecute que contiene el texto de una instrucción SQL que utiliza el componente.

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  

Ahora cuando el usuario ejecuta el paquete, después de seleccionar el "Mi entrada de registro de componente personalizada" en el cuadro de diálogo Registro, el registro contendrá una entrada claramente etiquetada como "Usuario::Mi entrada de registro de componente personalizada". Esta nueva entrada de registro contiene el texto de la instrucción SQL, la marca de tiempo y cualquier dato adicional registrado por el programador.

Consulte también

Registro de Integration Services (SSIS)