Visual Basic - Transacciones SQL Server

Life is soft - evento anual de software empresarial
 
Vista:

Transacciones SQL Server

Publicado por alberto (278 intervenciones) el 19/07/2001 13:43:52
Estoy escribiendo una aplicación en VB 6.0 contra SQL Server 7.0 y necesito que si al realizar una serie de operaciones contra la base de datos falle alguna se pueda deshacer la totalidad de las operaciones. La solución presentada ha sido iniciar una Transacción para lo cual al inicio de las operaciones se ejecuta vía una conexión ADO la instrucción T-SQL BEGIN TRANSACTION y al finalizar si todo ha ido bién la introcción COMMIT TRANSACTION, mientras que si algo ha ido mal se ejecuta ROLLBACK TRANSACTION, la sorpresa final es que no deshace todos los cambios realizados entre el inicio de la transacción y la instrucción ROLLBACK TRANSACTION. De hecho el procedimiento que produce el cambio que no se deshace se llama dos veces y el cambio que se realiza la primera vez es el que no se deshace.
¿Alguien sabe a que puede ser debido este comportamiento?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Transacciones SQL Server

Publicado por Moisés Galván Niño (5 intervenciones) el 25/07/2001 07:21:54
Hola albert, lo que puedo decirte sobre este tema es que si los cambios se están haciendo por medio de un RecordSet, es muy probable que la administracion de transacciones falle... Si hay una forma de evitar esto la desconozco.

Ojalá esto te sirva de algo.!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transacciones SQL Server

Publicado por AlexHarley666 (1 intervención) el 24/06/2003 18:06:35
Hola. Espero te sirva lo siguiente:

Debes omitir las líneas de SQL en que inicias la transacción. Luego debes colocar la siguiente instrucción antes de realizar la serie de INSERTs (debes setear la variable de conexion para iniciar transacciones):

- CONEXION.BEGINTRANS

En caso de falla en la transacción, el manejo de error será:

- CONEXION.ROLLBACKTRANS

En caso de que todo salga bien, deberás colocar la instrucción

- CONEXION.COMMITTRANS

EJEMPLO:

Sub INSERTA ()
on error goto ERROR
Conexion.Begintrans
INSERT1
INSERT2...

CONEXION.CommitTrans

Exit Sub
ERROR:
CONEXION.RollbackTrans
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar