Crear un asunto o mensaje dinámico para la tarea Enviar correo en SQL Server Integration Services

En este artículo se muestra cómo actualizar la propiedad de un objeto SQL Server Integration Services (SSIS) en tiempo de ejecución mediante la creación de una expresión de propiedad.

Versión del producto original: SQL Server
Número de KB original: 906547

Introducción

Puede crear un paquete SSIS mediante SQL Server Business Intelligence Development Studio. Al crear este paquete, puede crear una expresión para una propiedad del paquete SSIS para actualizar o rellenar la propiedad en tiempo de ejecución. Por ejemplo, si el paquete SSIS contiene una tarea Enviar correo, puede crear una expresión para la propiedad Subject y para la MessageSource propiedad . Puede usar la expresión de propiedad Subject para actualizar dinámicamente el asunto de un mensaje de correo electrónico. Puede usar la expresión de MessageSource propiedad para actualizar dinámicamente las variables en el mensaje de correo electrónico, como las variables que se rellenan mediante una transformación Recuento de filas.

En este artículo se describe cómo crear un asunto o mensaje dinámico para la tarea Enviar correo.

Más información

A continuación se muestra una expresión de propiedad de ejemplo para la propiedad Subject en una tarea Enviar correo.

"Package>>> " + @[System::PackageName] +" was executed at>>> " + (DT_WSTR, 40) @[System::StartTime] + " by user>>> "
+ @[System::UserName] + " on Machine>>> " + @[System::MachineName]

Si usa esta expresión de propiedad de ejemplo, el asunto de un mensaje de correo electrónico se actualiza dinámicamente. El asunto incluirá la siguiente información:

  • Información de texto En este ejemplo, el asunto del mensaje de correo electrónico incluye la información de Package>>> texto.
  • Variables del sistema
    El mensaje de correo electrónico incluye las siguientes variables del sistema:
    • PackageName
      Nombre del paquete.
    • StartTime
      La hora en que se ejecutó el paquete.
    • UserName
      El usuario que ejecutó el paquete.
    • MachineName
      Nombre del equipo en el que se ejecutó el paquete.

También puede incluir más información en la expresión, como una variable definida por el usuario. Por ejemplo, una tarea Data Flow puede incluir una transformación Recuento de filas antes de la tarea Enviar correo. (La transformación Recuento de filas se usa para contar filas). La transformación Recuento de filas rellena una variable definida por el usuario denominada @myrowcount. Esta variable almacena la información de recuento en el flujo de datos.

Para especificar que se envíe un mensaje de correo electrónico solo si el número de filas es menor que un valor determinado, modifique el flujo de control mediante restricciones de precedencia. Para ello, siga estos pasos:

  1. En SQL Server Business Intelligence Development Studio, haga clic con el botón derecho en Data Flow tarea y, a continuación, haga clic en Agregar restricción de precedencia.

  2. Haga doble clic en la restricción de precedencia que creó.

  3. En el cuadro de diálogo Restricción de precedencia Editor , haga clic en Expresión y restricción en operación de evaluación.

  4. En el cuadro Expresión , escriba la expresión: @myrowcount < 2

  5. En el cuadro de diálogo Restricción de precedencia Editor, haga clic en Aceptar.

Si se procesan menos de dos filas en el flujo de datos, se envía un mensaje de correo electrónico.

Además, puede usar la tarea Enviar correo como parte de un controlador de errores. Por ejemplo, es posible que desee enviar un mensaje de correo electrónico a los administradores cuando no se ejecuta un paquete SSIS. Para ello, cree un controlador de eventos OnError para el paquete y agregue una tarea Enviar correo al controlador de eventos. Cree una expresión de propiedad subject que capture la hora en que se ejecuta el paquete, la hora de inicio del contenedor o la hora de inicio del controlador de eventos a partir de las variables del sistema pertinentes. Por ejemplo, cree una expresión similar a la siguiente:

"Error in the task: " + @[System::SourceName] + "with the ID: " + @[System::SourceID]
+ " has failed at: " + (DT_WSTR, 20) @[System::ContainerStartTime] + "."

Esta expresión de ejemplo usa las siguientes variables del sistema:

  • StartTime: la hora en que se ejecutó el paquete.
  • ContainerStartTime: la hora en que se inició el contenedor.
  • EventHandlerStartTime: la hora en que se inició el controlador de eventos.

Referencias

Para obtener más información, consulte los temas siguientes en SQL Server Libros en pantalla:

  • Uso de expresiones de propiedad en paquetes
  • Cómo: Crear una expresión de propiedad
  • Expresiones avanzadas de Integration Services
  • Restricciones de precedencia
  • Establecer restricciones de precedencia en tareas y contenedores
  • Controladores de eventos de Integration Services