Problema con Transacciones

09/08/2006 - 10:05 por solusoft | Informe spam
Hola tengo este conjunto de operaciones SQL en el Analizador de Consultas:

CREATE TABLE Test (Columna int PRIMARY KEY)

begin tran t1
save tran t1

INSERT INTO Test VALUES (1)

save tran t2

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

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


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

rollback tran t2

commit tran

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

DROP TABLE Test


Funciona perfectamente. Ahora intento recrearlo en .NET con una aplicación
WinForms, y utilizando ADO.NET (objetos SqlConnection, SqlTransaction, etc..)

La cuestión es que en este paso - DESDE Aplicación .NET C# WinForms -

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

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

Es decir, me cancela la transacción !!!! No entienod porqué.

Lo raro es que con este error:

INSERT INTO Test VALUES (1)
puede insertar una clave duplicada en el objeto 'Test'.Se terminó la
instrucción.

select @@ERROR, @@ROWCOUNT, @@TRANCOUNT -- Vale 1 !!!

Si lo hace bien.


Es decir, con el error de conversión me cancela la transacción y con el
error de PK no la cancela, como debe ser. Y todo esto pasa ejecutando las
sentencias con C# ADO.NET.

No entiendo nada, alguien sabe qué pu ede estar pasando ??

Ya pregunté en el foro de C#, aunque es de ADO.NET a ver si alguien tiene
alguna idea.
Esos dos errores, se diferencian en algo ? es decir, aparte del código de
error, hay alguna diferencia más que pueda influir en las transacciones ?.

Quizá sea problema del Provider de ADO.NET para SqlServer, ya no sé qué
pensar.

Muchas gracias, perdonen por la extensión.

Preguntas similare

Leer las respuestas

#1 solusoft
09/08/2006 - 12:04 | Informe spam
Ver el mensaje siguiente que he puesto, que está más claro y aparece el
último punto donde me he quedado.

Saludos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida