Errores en transacciones (SQL Server)

Hola! Buen día... Tengo una gran problema y espero me puedan ayudar.
Se trata de lo siguiente...
Estoy haciendo un sistema de cobros para el cual utilizo transacciones en SQL (ya que se manejan muchas insercciones y actualizaciones con gran cantidad de dinero)... El problema es que envío al servidor de BD todos los conceptos que se van a cobrar por separado... Los cuales tengo protegidos con transacciones. Pero esas transacciones solo se realizan y cubren los conceptos por separado (ya que son distintas tablas las que se afectan), así que realice una transacción que cubre todo el movimiento desde Visual Basic .NET
Pero el problema es que desafortunadamente la red no es muy buena, y existen muchos problemas de conexión con el servidor... Así que si por algún motivo se "cae" la red en el preciso momento que esta abierta la transacción en Visual, me marca una excepción o error, en la cual programo un rollback... Pero como no hay conexión, esta se queda abierta, y traba el server.
¿Alguien me podría dar un consejo de como remediar esto?
De antemano muchas gracias...
Respuesta
1
Cuando te da el error, lo que normalmente se hace (al menos yo) es que cierro la conexión hacia la base de datos. Pregunto el estado algo así:
If DBCon.State = ConnectionState.Open Then
    DBCon.Close
End If
En tu caso, deberás probar con el ConnectionState. Broken. El te arrojará el estado de tu conexión y podrás probar el rollback de la transacción.
Lo recomendable es que el Trans. Commit este al final de todas las instrucciones que vallas a realizar, peero si aun así el server se te queda pegado entonces manda a cerrar la conexión. Y lo super óptimo que podrías hacer, claro está, es asegurar una correcta infraestructura de red para no tener problemas de este tipo.
Muchas gracias por el comentario, desafortunadamente no fue la solución. El problema se corrigió enviando todos los conceptos en una sola variable (separados por un carácter especial), la cual "parto" en SQL... de esa manera si se pierde la conexión, la transacción se deshace y no traba el server.
La opción que proponías era buena, pero el proceso seguía ejecutándose en el server.
Disculpa por la tardanza en contestar. Que tengas un excelente día

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas