Cuando mi aplicación C# .net actualiza los registros en más de una tabla, utilizo las transacciones, de modo que si algo falla durante la transacción, puedo deshacerlo.¿Dónde está el mejor lugar para manejar transacciones en procedimientos almacenados o en la aplicación?
¿Cuál es una mejor práctica?
-Utiliza el procedimiento almacenado con BEGIN TRANSACTION/ROLLBACK/COMMIT TRANSACTION; -Utilizar TransactionScope en la aplicación de la siguiente manera:
using (TransactionScope ts = new TransactionScope())
{
}
Dijo que su aplicación actualiza los registros en más de una tabla. Eso significa que o bien necesita abrir el tran en un proceso y comprometer en otro, o necesita tener toda la lógica en un proceso (o en múltiples procutos llamarse entre sí) lo que nunca es algo bueno ... – zvolkov
Es cierto, la transacción db debe terminar lo más rápido posible. Lo opuesto nunca es algo bueno. – Constantin
Puede tener una transacción abierta entre varias tablas, múltiples bases de datos e incluso servidores. Como dice Mufaka, lo mejor es dejar que el servidor sql maneje sus propias transacciones o podrías tener algunos problemas serios de integridad de datos. Prácticamente el punto de las transacciones, creo. – Praesagus