Período de vigencia de las transacciones
Hay una diferencia importante entre las transacciones iniciadas en procedimientos almacenados Transact-SQL y las iniciadas en código administrado: el código de Common Language Runtime (CLR) no puede desequilibrar el estado de la 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 se debe confirmar o revertir; de otro modo, SQL Server genera un error cuando se sale del 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 no responda (evitando que ser produzca cualquier otra operación con efectos secundarios). 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.