Transacciones distribuidas

22/09/2004 - 18:08 por Julián Sanz García | Informe spam
Hola,

Estoy utilizando transacciones distribuidas de COM+, pero cuando ejecuto
esto:
Me.Transaccion=> Es una transaccion que viene desde otra capa

Dim sCadena As String "Server=SRVDESARROLLO;Database=CMA;Uid=cma;Pwd=cm0;Enlist=false;Max Pool
Size 0;Min Pool Size=0;Pooling=true"

Dim oConnection As SqlConnection

Dim oCommand As SqlCommand

For i = 1 To 15



Try

oConnection = New SqlConnection(sCadena)

oCommand = New SqlCommand("Insert into Pais(Descripcion) values('" & i &
"')", oConnection)

oConnection.Open()

If Not Me.Transaccion Is Nothing Then

oConnection.EnlistDistributedTransaction(Me.Transaccion)

End If

oCommand.ExecuteNonQuery()

oConnection.Close()

Catch ex As Exception

If oConnection.State = ConnectionState.Open Then

oConnection.Close()

End If

Throw ex

End Try

Next



Cuando llega a la iteracion 10, me da un error que dice:

Un suceso no pudo invocar a uno de los subscriptores.



¿Que puede ser? ¿Como lo puedo solucionar?
 

Leer las respuestas

#1 SqlRanger
23/09/2004 - 19:17 | Informe spam
Lo que yo no entiendo es porqué si estás usando COM+ tienes que andar
controlando las transacciones y enlistando las conexiones en transacciones.
COM+ hace todo este trabajo de forma automática, sólo hay que establecer los
atributos correspondientes en las clases y en los métodos. Una cosa más o
menos como esta:

Imports System.EnterpriseServices

'Cualquier método de esta clase se ejecuta siempre en una transacción
distribuida
<Transaction(TransactionOption.Required)> _
Public Class Class1
Inherits ServicedComponent

<AutoComplete()> _
Public Sub HacerAlgo()
' Cualquier conexión que se abra aquí se enlistará
' automáticamente en la transacción existente

End Sub

End Class

Saludos:

Jesús López
MVP



"Julián Sanz García" escribió en el mensaje
news:
Hola,

Estoy utilizando transacciones distribuidas de COM+, pero cuando ejecuto
esto:
Me.Transaccion=> Es una transaccion que viene desde otra capa

Dim sCadena As String > "Server=SRVDESARROLLO;Database=CMA;Uid=cma;Pwd=cm0;Enlist=false;Max Pool
Size 0;Min Pool Size=0;Pooling=true"

Dim oConnection As SqlConnection

Dim oCommand As SqlCommand

For i = 1 To 15



Try

oConnection = New SqlConnection(sCadena)

oCommand = New SqlCommand("Insert into Pais(Descripcion) values('" & i &
"')", oConnection)

oConnection.Open()

If Not Me.Transaccion Is Nothing Then

oConnection.EnlistDistributedTransaction(Me.Transaccion)

End If

oCommand.ExecuteNonQuery()

oConnection.Close()

Catch ex As Exception

If oConnection.State = ConnectionState.Open Then

oConnection.Close()

End If

Throw ex

End Try

Next



Cuando llega a la iteracion 10, me da un error que dice:

Un suceso no pudo invocar a uno de los subscriptores.



¿Que puede ser? ¿Como lo puedo solucionar?


Preguntas similares