es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La tarea de Script de SSIS para enviar correo electrónico no muestra los datos correctamente.

Estoy tratando de consultar la base de datos y enviar el contenido en el cuerpo del correo electrónico. El contenido es la Orden y los detalles para cada usuario. Estoy intentando llamar a una tarea de script para componer el cuerpo y estoy usando el contenido en la tarea Enviar correo electrónico. Cuando trato de ejecutar el paquete, se ejecuta sin errores, pero esto es lo que veo en mi correo electrónico:

Tarea Ejecutar SQL enviada usando la tarea Enviar correo electrónico en SSIS:

Customer Num Rec Loc Strain StrainCode Age Sex Genotype Sent From Quantity
Microsoft.SqlServer.Dts.Runtime.Variable Microsoft.SqlServer.Dts.Runtime.Variable Microsoft.SqlServer.Dts.Runtime.Variable Microsoft.SqlServer.Dts.Runtime.Variable Microsoft.SqlServer.Dts.Runtime.Variable Microsoft.SqlServer.Dts.Runtime.Variable Microsoft.SqlServer.Dts.Runtime.Variable Microsoft.SqlServer.Dts.Runtime.Variable Microsoft.SqlServer.Dts.Runtime.Variable

A continuación se muestra el script:

namespace ST_c074d0acfee7488b96d42a0f858efee7
{
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{

        #region VSTA generated code
        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        };
        #endregion

        public void Main()
        {
            string header = string.Empty;
            string message = string.Empty;

            header = "Tarea Ejecutar SQL enviada usando la tarea Enviar correo electrónico en SSIS:\n\n";
            header += string.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\n", "Customer Num", "Rec Loc", "Strain", "StrainCode", "Age", "Sex", "Genotype", "Sent From", "Quantity");
            message = string.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}",
                                        Dts.Variables["User::CustomerNumber"].ToString(),
                                        Dts.Variables["User::ReceivingLocation"].ToString(),
                                        Dts.Variables["User::StrainName"].ToString(),
                                        Dts.Variables["User::StrainCode"].ToString(),
                                        Dts.Variables["User::Age"].ToString(),
                                        Dts.Variables["User::Sex"].ToString(),
                                        Dts.Variables["User::Genotype"].ToString(),
                                        Dts.Variables["User::SentFrom"].ToString(),
                                        Dts.Variables["User::OrderQuantity"].ToString());

        Dts.Variables["User::EmailMessage"].Value= header + message;

        Dts.TaskResult = (int)ScriptResults.Success;
        }
    }
}

A continuación se encuentra el paquete y en las propiedades de la Tarea de Script estoy pasando todos los datos necesarios como se muestra a continuación:

y la consulta para obtener todos los datos:

Y en el bucle For estoy haciendo la asignación.

¿Alguien puede sugerirme qué estoy perdiendo aquí y por qué mi correo electrónico no muestra datos reales?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la tarea del script no está recuperando correctamente los datos del resultado de la tarea de Execute SQL. Aquí hay algunas sugerencias:

    1. Verifique los mapeos de variables en el contenedor de For Loop. Asegúrese de que las variables estén mapeadas correctamente a las columnas en el resultado de la tarea de Execute SQL.
    2. Verifique que las variables usadas en la tarea de script tengan el tipo de dato correcto. Por ejemplo, si una variable debe contener un valor numérico, asegúrese de que esté declarada como entero o flotante.

    3. Agregue algunos registros al paquete para ver si hay algún error durante la ejecución. Puede usar la función de registro de SSIS para escribir mensajes en un archivo o una tabla de base de datos.

    4. Use el modo de depuración en SSDT/BIDS para recorrer el paquete y ver dónde ocurre el problema. Esto ayudará a encontrar el problema y encontrar una solución.

    Una vez que haya identificado el problema, puede hacer los cambios necesarios en el paquete y la tarea de script para obtener el resultado deseado.

Comments are closed.