Problema con Transacciones

09/08/2006 - 11:03 por solusoft | Informe spam
Hola a todos, escribí un mensaje anterior.

Voy a reformular la pregunta. Estoy con Sql Server 2000 y el analizador de
consultas exclusivamente, ya nada de C# ni ado.net como dije en el mensaje
anterior.

En el Analizador de consultas hago lo siguiente:


CREATE TABLE Test (Columna int PRIMARY KEY)

begin tran t1

save tran t1

select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 1

INSERT INTO Test VALUES (1xx)

select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 1

INSERT INTO Test VALUES ('1xx')
tipo de datos int.



select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 0 !!!!!!

rollback tran t1 -- Falla si @@TRANCOUNT vale 0

commit tran -- Falla si @@TRANCOUNT vale 0

select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 0
SELECT * FROM Test

DROP TABLE Test


Tengo dos Inserts dentro de una transacción. Los dos inserts fallan. El
último me cancela la transacción al fallar, TRANCOUNT pasa de 1 a 0 !!!


INSERT INTO Test VALUES (1xx)

Para este Insert, después de su ejecución, TRANCOUNT sigue valiendo 1



INSERT INTO Test VALUES ('1xx')
tipo de datos int.

Para este Insert, después de su ejecución, TRANCOUNT pasa a valer 0 !!!
No entiendo el porqué... alguien puede aclararme, estoy desesperado...

Gracias a todos.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristán
09/08/2006 - 11:34 | Informe spam
Echa un vistazo al tema SET IMPLICIT_TRANSACTIONS en los BOL


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"solusoft" escribió en el mensaje
news:
Hola a todos, escribí un mensaje anterior.

Voy a reformular la pregunta. Estoy con Sql Server 2000 y el analizador de
consultas exclusivamente, ya nada de C# ni ado.net como dije en el mensaje
anterior.

En el Analizador de consultas hago lo siguiente:


CREATE TABLE Test (Columna int PRIMARY KEY)

begin tran t1

save tran t1

select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 1

INSERT INTO Test VALUES (1xx)

select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 1

INSERT INTO Test VALUES ('1xx')


de
tipo de datos int.



select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 0 !!!!!!

rollback tran t1 -- Falla si @@TRANCOUNT vale 0

commit tran -- Falla si @@TRANCOUNT vale 0

select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 0
SELECT * FROM Test

DROP TABLE Test


Tengo dos Inserts dentro de una transacción. Los dos inserts fallan. El
último me cancela la transacción al fallar, TRANCOUNT pasa de 1 a 0 !!!


INSERT INTO Test VALUES (1xx)

Para este Insert, después de su ejecución, TRANCOUNT sigue valiendo 1



INSERT INTO Test VALUES ('1xx')


de
tipo de datos int.

Para este Insert, después de su ejecución, TRANCOUNT pasa a valer 0 !!!
No entiendo el porqué... alguien puede aclararme, estoy desesperado...

Gracias a todos.
Respuesta Responder a este mensaje
#2 solusoft
09/08/2006 - 11:59 | Informe spam
Ver el mensaje siguiente que he puesto, que está más claro y aparece el
último punto donde me he quedado.

Saludos.

"solusoft" escribió:

Hola a todos, escribí un mensaje anterior.

Voy a reformular la pregunta. Estoy con Sql Server 2000 y el analizador de
consultas exclusivamente, ya nada de C# ni ado.net como dije en el mensaje
anterior.

En el Analizador de consultas hago lo siguiente:


CREATE TABLE Test (Columna int PRIMARY KEY)

begin tran t1

save tran t1

select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 1

INSERT INTO Test VALUES (1xx)

select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 1

INSERT INTO Test VALUES ('1xx')
tipo de datos int.



select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 0 !!!!!!

rollback tran t1 -- Falla si @@TRANCOUNT vale 0

commit tran -- Falla si @@TRANCOUNT vale 0

select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- @@TRANCOUNT vale 0
SELECT * FROM Test

DROP TABLE Test


Tengo dos Inserts dentro de una transacción. Los dos inserts fallan. El
último me cancela la transacción al fallar, TRANCOUNT pasa de 1 a 0 !!!


INSERT INTO Test VALUES (1xx)

Para este Insert, después de su ejecución, TRANCOUNT sigue valiendo 1



INSERT INTO Test VALUES ('1xx')
tipo de datos int.

Para este Insert, después de su ejecución, TRANCOUNT pasa a valer 0 !!!
No entiendo el porqué... alguien puede aclararme, estoy desesperado...

Gracias a todos.
Respuesta Responder a este mensaje
#3 solusoft
10/08/2006 - 10:27 | Informe spam
Gracias, estuve echando un vistazo, sobre tema de transacciones implícitas.

De todas formas, no aclara mi caso, el error de una insert cancele la
transacción, porque además no todos los insert que fallan cancelan la
transacción.

Saludos.



"Carlos Sacristán" escribió:

Echa un vistazo al tema SET IMPLICIT_TRANSACTIONS en los BOL
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida