Ocurrencia
El módulo Facturación, así como en otros módulos al intentar capturar un registro nuevo es presentado el error Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Ambiente
Cross Segmentos - TOTVS Backoffice (Línea Protheus) MI - Facturación (SIGAFAT) – Versión 12.1.17
Causa
Este error ocurre cuando dos usuarios tienen bloqueos en objetos separados y un usuario necesita utilizar el recurso que está utilizando el otro. El propio SQL verifica todos los threads que están en la transacción y posteriormente selecciona el que está trabajando menos para ser la “victima” del deadlock, terminando así su procesamiento y permitiendo que el otro proceso finalice correctamente. Esto puede presentarse debido a procesos colgados o accesos a la tabla para su uso en otros procesos, incluso por desarrollos específicos en el ambiente.
Solución
Al tratarse de un error intermitente, es decir; no cuenta con una causa identificada en nuestra base de conocimientos, no existe forma de rastrear el origen del mismo. Por este motivo, es recomendable que realice los siguientes pasos para identificar los procesos “victima” del deadlock:
1.- Valide en un ambiente de pruebas estándar, sin personalizaciones y actualizado con los últimos componentes del portal, para eliminar posibles inconsistencias debido a la desactualización;
2.- Realice un rastro del procesamiento;
Opción a)- Digitar en el SQL Server el comando “sp_who2” y localizar en la columna “BlkBy” el número de conexión presentada en el error, la cual puede estar trabajando.
Opción b)- Rastrear por medio del Monitor del DBAccess. MP - DBAccess - Como habilitar el Trace (Rastreo)
0 Comentarios