Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Frost en 23 Diciembre 2011, 14:44 PM

Título: como controlar un error de desconexión?
Publicado por: Frost en 23 Diciembre 2011, 14:44 PM
Hola
Necesito ayuda para controlar un error de desconexion, cada 5 seg llamo a un procedimiento almacenado que esta en un servidor externo y si dentro de ese tiempo ocurre una desconexion, a pesar que modifique el timeout de la conexión, el sistema queda tratando de completar el ciclo, aun que la desconexion sea de menos de un segundo

quien me puede orientar un poco para saber como se manejan este tipo de incidencias?   :huh:

saludos
Título: Re: como controlar un error de desconexión?
Publicado por: Novlucker en 23 Diciembre 2011, 15:12 PM
Con try/catch como casi cualquier error, y chequeando el estado de la conexión

¿Puedes mostrar el código que utilizas?

Saludos
Título: Re: como controlar un error de desconexión?
Publicado por: Frost en 23 Diciembre 2011, 15:19 PM
Son varias lineas de codigo pero es en esta parte donde llamó al procedimiento almacenado, tmb chequeo el estado de la conexión, el timer1 se ejecuta cada 5 segundos

Código (vbnet) [Seleccionar]
Private Sub ExecStoredProcedure()

       Try

           ' conexion con TIMEOUT= 4seg
           If sqlConnection.State = ConnectionState.Closed Then
               sqlConnection.Open()
           End If


           ' conexion con TIMEOUT= 3600 seg
           If sqlConnection2.State = ConnectionState.Closed Then
               sqlConnection2.Open()
           End If


           sqlCommand.Connection = sqlConnection
           sqlCommand.CommandType = CommandType.StoredProcedure
           sqlCommand.CommandText = "prcNIHoraServidor"
           sqlCommand.ExecuteNonQuery()

           lblCheckStatus.Visible = True
           lblCheckStatus.Text = "Conectado"
           lblCheckStatus.ForeColor = Color.Green
           BtnGrabar.BackColor = Color.Transparent
           BtnGrabar.Enabled = True

          Catch ex As Exception

           MsgBox(ex.Message, MsgBoxStyle.Critical, AcceptButton)
           lblCheckStatus.Visible = True
           lblCheckStatus.Text = "Desconectado"
           lblCheckStatus.ForeColor = Color.Red
           BtnGrabar.BackColor = Color.Red
           BtnGrabar.Enabled = False

       End Try

   End Sub


   Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

       ExecStoredProcedure()

       '==================================================================================
       '=========================eliminar los Console.WriteLine===========================
       '==================================================================================

       If sqlConnection.State = ConnectionState.Open Then
           Console.WriteLine("=========================================Open=========================================")
       ElseIf sqlConnection.State = ConnectionState.Closed Then
           Console.WriteLine("=========================================Closed=========================================")
       ElseIf sqlConnection.State = ConnectionState.Broken Then
           Console.WriteLine("=========================================Broken=========================================")
       End If

   End Sub


me sale este mensaje de texto


saludos
Título: Re: como controlar un error de desconexión?
Publicado por: Novlucker en 23 Diciembre 2011, 15:44 PM
Lo que no termino de entender es "el sistema queda tratando de completar el ciclo", si sigues invocando al timer luego de que ha habido error es algo lógico, aunque quizás no estoy comprendiendo tu problema :-\.

Saludos
Título: Re: como controlar un error de desconexión?
Publicado por: Frost en 23 Diciembre 2011, 16:44 PM
he logrado ir filtrando el error y me encuentro que solo falla cuando ha ocurrido una desconexion y trato de hacer un UPDATE en cualquier procedimiento almacenado o tabla, obviamente trato de hacer el UPDATEuna vez que la conexión esta ON
Título: Re: como controlar un error de desconexión?
Publicado por: Novlucker en 23 Diciembre 2011, 17:21 PM
Sigo sin entender, ¿qué método estas utilizando para el update? ¿Con que estas leyendo los datos?

Saludos
Título: Re: como controlar un error de desconexión?
Publicado por: gmarrero en 3 Abril 2013, 03:40 AM
Frost

Entiendo perfectamente lo que te pasa o pasaba (ya hace bastante tiempo que trataste el tema) y a la verdad estoy casi al tirar la toalla en lo que estoy haciendo.

En mi caso cuando trato de hacer un SELECT y tarda mucho la clase el SQLClient se me desconecta y muchas cosas que dependen de ella se cuelgan.

A la verdad que es mucha información la que le pido al controlador que haga ya que en estos momentos la BD está en 12 GB físico y hay más de 30 millones de registros y contando.

Estoy viendo la posibilidad de aplicar particionamiento vertical a la tabla de la BD que manipulo para ver que sale.

Si me da resultado le comento.

Saludos
Título: Re: como controlar un error de desconexión?
Publicado por: .::IT::. en 3 Abril 2013, 06:36 AM
Frost usa el evento StateChange de SqlConnection.

gmarrero, porque tienes la necesidad de consultar los 30 millones de registro de golpe, deberías consultar a demanda (paginando los resultados)