Período de duración de las transacciones
Se aplica a: SQL Server
Hay una diferencia importante entre las transacciones iniciadas en los procedimientos almacenados de Transact-SQL y las iniciadas en código administrado: el código de Common Language Runtime (CLR) no puede desequilibrar el estado de transacción al entrar o salir de una invocación CLR. Tenga en cuenta las implicaciones siguientes de esta diferencia:
Una transacción iniciada dentro de un marco CLR debe confirmarse o revertirse, o bien SQL Server genera un error cuando se cierra el marco.
Una transacción exterior no se puede confirmar o revertir dentro del código CLR.
Un intento para confirmar una transacción no iniciada en el mismo procedimiento produce un error en tiempo de ejecución.
Un intento de revertir una transacción no iniciada en el mismo procedimiento hace que la transacción deje de responder (lo que impide que se produzca ninguna otra operación de efecto secundario). La transacción se interrumpe hasta que el código CLR se sale del ámbito. Tenga en cuenta que esto puede resultar útil cuando detecta un error dentro de su procedimiento y desea asegurarse de que toda la transacción finaliza.