
COMMIT - ROLLBACK MS-SQL Server
Publicado por JAVIER (11 intervenciones) el 11/11/2014 17:01:40
Hola,
tengo un problema con el LOGOUT - COMMIT - ROLLBACK con MS-SQL Server.
Cuando realiza un ROLLBACK a causa de un Error controlado, la Transacción que controlo mediante el LOGOUT previo con dos files me la aborta OK, lo mismo si al final ejecuta el COMMIT, la Transacción se lleva a cabo OK.
El problema es que, pretendía utilizar esta posibilidad, no para errores controlados, si no para cuelgues de mi aplicación por diversos motivos (que se vaya la luz, fallo de memoria, etc.), cuando el proceso se encuentra en cualquiera de los puntos de la transacción, entre el el LOGOUT y el COMMIT. O sea que no llegue a ejecutarse el COMMIT.
Tenía la idea de que al no ejecutarse el COMMIT, aunque no se ejecutara el ROLLBACK la Transacción no se llevaría a cabo. He forzado la caída de la aplicación en varios puntos del programa, antes del COMMIT, y al final el resultado es siempre el mismo, las instrucciones de Modificación (PUT, ADD, DELETE) de la Tablas/Files (indicados en el Logout) se terminan ejecutando realmente cuando aborto antes de realizar otras instrucciones de modificación y antes del COMMIT. Si es así como trabaja el COMMIT, ¿Qué sentido tiene para proteger los datos ante cualquier tipo de caída de la aplicación?
He observado que realizando una Select desde el MS- SQL Manag. Studio sobre los registros a modificar de las distintas tablas indicadas en el LOGOUT, si hago la consulta antes del COMMIT, la select se queda "colgada" hasta que o bien se realiza el COMMIT o bien "tiro" la aplicación, esto es, se observa cómo mantiene los registros bloqueados. Una vez abortada la aplicación, se muestran por fin los resultados en la Select pero lo hacen con las modificaciones de instrucciones de la Transacción ejecutadas en el fuente antes de abortar, pero que no esperaba que tuvieran efecto al no haberse llegado a ejecutar el COMMIT.
tengo un problema con el LOGOUT - COMMIT - ROLLBACK con MS-SQL Server.
Cuando realiza un ROLLBACK a causa de un Error controlado, la Transacción que controlo mediante el LOGOUT previo con dos files me la aborta OK, lo mismo si al final ejecuta el COMMIT, la Transacción se lleva a cabo OK.
El problema es que, pretendía utilizar esta posibilidad, no para errores controlados, si no para cuelgues de mi aplicación por diversos motivos (que se vaya la luz, fallo de memoria, etc.), cuando el proceso se encuentra en cualquiera de los puntos de la transacción, entre el el LOGOUT y el COMMIT. O sea que no llegue a ejecutarse el COMMIT.
Tenía la idea de que al no ejecutarse el COMMIT, aunque no se ejecutara el ROLLBACK la Transacción no se llevaría a cabo. He forzado la caída de la aplicación en varios puntos del programa, antes del COMMIT, y al final el resultado es siempre el mismo, las instrucciones de Modificación (PUT, ADD, DELETE) de la Tablas/Files (indicados en el Logout) se terminan ejecutando realmente cuando aborto antes de realizar otras instrucciones de modificación y antes del COMMIT. Si es así como trabaja el COMMIT, ¿Qué sentido tiene para proteger los datos ante cualquier tipo de caída de la aplicación?
He observado que realizando una Select desde el MS- SQL Manag. Studio sobre los registros a modificar de las distintas tablas indicadas en el LOGOUT, si hago la consulta antes del COMMIT, la select se queda "colgada" hasta que o bien se realiza el COMMIT o bien "tiro" la aplicación, esto es, se observa cómo mantiene los registros bloqueados. Una vez abortada la aplicación, se muestran por fin los resultados en la Select pero lo hacen con las modificaciones de instrucciones de la Transacción ejecutadas en el fuente antes de abortar, pero que no esperaba que tuvieran efecto al no haberse llegado a ejecutar el COMMIT.
Valora esta pregunta


0