Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-07-2003
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
ADOConection.CommitTrans con StoreProcedures...

Hola compañeros.
Mi consulta es la siguiente:
Si tengo dentro de una transacción de ADOConection la llamada a la ejecución de procedimientos almacenados que se ejecutan en el servidor SQL; si por cualquier motivo realizo un RollBack en lugar del CommitTrans, ¿dejan de tener vigencia los cambios hechos por los StoreProcedures?.

Sé que lo podría probar, pero prefiero si alguien lo ha experimentado, que comparta conmigo dicha experiencia.

Gracias a todos
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #2  
Antiguo 16-07-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Es tan fácil de probar, que acabarias mucho antes probandolo.

Teoricamente, al deshacer la transacción de la conexión, también se desharan los cambios hechos en la transacción confirmada del procedimiento almacenado.

Esto es así por la forma en que se han implementado las transacciones anidadas de SQL Server. No són verdaderas transacciones anidadas, sinó que están ahí para poder modularizar bien el código. Es decir para poder poner una transacción en un procedimiento almacenado, y que esto no falle al ejecutarlo desde donde se ha llamado (pongamos que se llama desde otro procedimiento) porqué hayamos iniciado allí otra transacción. De esta forma evitamos tener que saber si un procedimiento inicia o no transacciones.

Aunque en realidad todas las transacciones anidadas, actuan como una unica transacción. Si en cualquiera de los niveles se ejecuta un RollBack, se deshacen todos los cambios de todos los niveles de anidamiento (no solo de las transacciones interiores a la actual, sino incluso de las exteriores). Y respecto a la confirmación, la unica válida es la de la transacción más exterior, puesto que el resto de transacciones, aunque sean confirmadas, sus cambios serán deshechos por un Rollback en una transacción exterior.

NOTA : Llamo transacciones interiores a las que se inician y finalizand dentro de la transacción actual, y exteriores a las que se han iniciado anteriormente (y que por tanto aún deben estar pendientes de finalización).

Aunque todo esto es teoria, es mejor perder un minuto programando un caso de prueba y confirmarlo sin lugar a dudas.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 17-07-2003
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Muchas gracias, está clarísimo. Esta mañana en cuanto acabe el trabajo lo pruebo y publico el resultado.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:50:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi