Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para confirmar o revertir una transacción en modo de confirmación manual, una aplicación llama a SQLEndTran. Los controladores para DBMS que admiten transacciones suelen implementar esta función mediante la ejecución de una instrucción COMMIT o ROLLBACK . El Administrador de controladores no llama a SQLEndTran cuando la conexión está en modo de confirmación automática; simplemente devuelve SQL_SUCCESS, incluso si la aplicación intenta revertir la transacción. Dado que los controladores de DBMS que no admiten transacciones siempre están en modo de confirmación automática, pueden implementar SQLEndTran para devolver SQL_SUCCESS sin hacer nada o no implementarlo en absoluto.
Nota:
Las aplicaciones no deben confirmar ni revertir transacciones ejecutando instrucciones COMMIT o ROLLBACK con SQLExecute o SQLExecDirect. Los efectos de hacerlo son indefinidos. Los posibles problemas incluyen que el controlador ya no puede determinar cuándo una transacción está activa y que estas instrucciones fallen en los orígenes de datos que no admiten transacciones. Estas aplicaciones deben llamar a SQLEndTran en su lugar.
Si una aplicación pasa el identificador de entorno a SQLEndTran pero no pasa un identificador de conexión, el Administrador de controladores llama conceptualmente a SQLEndTran con el identificador de entorno para cada controlador que tenga una o varias conexiones activas en el entorno. A continuación, el controlador confirma las transacciones en cada conexión del entorno. Sin embargo, es importante tener en cuenta que ni el controlador ni el Administrador de controladores realizan una confirmación en dos fases en las conexiones del entorno; esto es simplemente una comodidad de programación para llamar simultáneamente a SQLEndTran para todas las conexiones del entorno.
(Por lo general, se usa una confirmación en dos fases para confirmar transacciones que se distribuyen entre varios orígenes de datos. En su primera fase, los orígenes de datos se sondean a si pueden confirmar su parte de la transacción. En la segunda fase, la transacción se confirma realmente en todos los orígenes de datos. Si los orígenes de datos responden en la primera fase que no pueden confirmar la transacción, no se produce la segunda fase).