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 secuencia de comandos de SSIS está dando un error de bloqueo.

Estoy intentando hacer una consulta en la base de datos y enviar el contenido en el cuerpo del correo electrónico. Intenté seguir lo que está aquí para mi caso de uso. Pero cuando intento ejecutar el paquete, arroja un error de bloqueo. ¿Alguien puede sugerir por favor qué es lo que me falta?

El script es como sigue

Y la propiedad del script de tarea

Cuando se ejecuta el paquete, los errores son:

Error: 0xC001405C en Tarea de script: Se detectó un bloqueo mientras se intentaba bloquear las variables “User::EmailData” para acceso de lectura/escritura. No se puede adquirir un bloqueo después de 16 intentos. Se agotaron los bloqueos.

Error: 0xC001405D en Tarea de script: Se detectó un bloqueo mientras se intentaba bloquear las variables “System::InteractiveMode” para acceso de lectura y las variables “User::EmailData” para acceso de lectura/escritura. No se puede adquirir un bloqueo después de 16 intentos. Se agotaron los bloqueos.

Error: 0x1 en Tarea de script: Se detectó un bloqueo mientras se intentaba bloquear las variables “User::EmailData” para acceso de lectura/escritura. No se puede adquirir un bloqueo después de 16 intentos. Se agotaron los bloqueos.

Task failed: Script Task

Advertencia: 0x80019002 en Bucle Foreach cada usuario: Código de advertencia DTSW_MAXIMUMERRORCOUNTREACHED. El método de ejecución se ha realizado correctamente, pero el número de errores producidos (5) ha alcanzado el máximo permitido (1); lo que resulta en un fallo. Esto ocurre cuando el número de errores alcanza el número especificado en MaximumErrorCount. Cambiar MaximumErrorCount o corregir los errores.

Advertencia: 0x80019002 en SurplusMouseEmailOrderDetail: Código de advertencia DTSW_MAXIMUMERRORCOUNTREACHED. El método de ejecución se ha realizado correctamente, pero el número de errores producidos (5) ha alcanzado el máximo permitido (1); lo que resulta en un fallo. Esto ocurre cuando el número de errores alcanza el número especificado en MaximumErrorCount. Cambiar MaximumErrorCount o corregir los errores.

El siguiente es la consulta:

SELECT cus.CustomerNumber como CustomerNumber, cus.Location as ReceivingLocation, i.StrainName as StrainName, i.StrainCode as StrainCode, i.Age as Age, i.Sex as Sex, i.Genotype as Genotype, i.RoomNumber as SentFrom, io.OrderQuantity as OrderQuantity FROM [dbo].[MouseOrder] mo JOIN [dbo].[Customer] cus on cus.Customer_ID = mo.CustomerId JOIN [dbo].[InventoryOrder] io on io.OrderId = mo.MouseOrder_ID JOIN [dbo].[Inventory] i on i.Inventory_ID = io.InventoryId WHERE mo.OrderDate = convert(date,getdate() AT TIME ZONE ‘UTC’ AT TIME ZONE ‘Eastern Standard Time’) and mo.SAMAccountEmail = ?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error que está viendo indica que hay un bloqueo produciéndose al intentar bloquear la variable “User::EmailData” para acceder en modo lectura/escritura. Los bloqueos están agotando el tiempo después de 16 intentos.

    Una posible solución es asegurarse de acceder a la variable solo una vez en su código. Actualmente, parece que está accediendo a la variable varias veces:

    var data = varCollection["User::EmailData"].Value;
    da.Fill(dt, varCollection["User::EmailData"].Value);
    

    En su lugar, podría intentar acceder a ella una vez y almacenarla en una variable:

    var emailData = varCollection["User::EmailData"].Value;
    da.Fill(dt, emailData);
    

    Otra opción podría ser intentar cambiar el nivel de bloqueo de las variables. Puede hacer esto yendo a las propiedades del paquete -> pestaña de Depuración -> Cambiar los ajustes de “DefaultBufferSize” y “DefaultBufferMaxRows” para que sean números más bajos. Esto puede limitar la cantidad de datos que se almacenan en memoria y quizás solucionar el problema de bloqueo.

    Finalmente, podría ser útil revisar cualquier otra parte de su código que esté accediendo a variables. Si está accediendo a variables desde múltiples tareas concurrentemente, esto podría estar causando el bloqueo.

    ¡Espero que esto le ayude!

Comments are closed.