none
Tiempo de repuesta de un Procedimiento almacenado muy lento. RRS feed

  • Pregunta

  • Hola amigos del foro: Quiero mejorar un procedimiento almacenado donde leo las ventas realizadas en un periodo de fecha. Cuando ejecuto el SP desde el Sql Managment la repuesta es casi inmedita, pero cuando lo ejecuto desde VS2008 la repuesta es mucho mas lenta, demasiado lenta.

    La conección desde mi app.config es el siguiente: <add name="strdbVentas" connectionString="Data Source=.\sqlexpress;Database=ClientesYVentas;Integrated Security=True;Connect Timeout=30;" />

    ¿A que se deben esas dos diferencias en el tiempo de repuesta? ¿puedo mejorarlo de alguna manera?

    Muchas gracias.

    lunes, 3 de febrero de 2014 15:35

Todas las respuestas

  • Según lo que dices a nivel de base de datos no es tu problema, puedes poner el codigo de como llamas a tu store procedure y los metodos que utilizas?

    Si mi respuesta te ha ayudado a resolver tus problemas, Selecciona "Proponer como respuesta"

    Blog
    J.Joaquin

    lunes, 3 de febrero de 2014 15:50
  • Hola J.Joaquin, para llamar al PA desde el programa lo hago de la siguiente forma:

    Private Function VentasFechaPerido(ByVal idDepto As Integer, ByVal FechaInic As Date, ByVal FechaFinal As Date) As DataTable
            Dim NewTabla As New DataTable()

            Try
                Dim dbCommand As New SqlCommand("papVentasRealizadas", MyConec)
                dbCommand.CommandType = CommandType.StoredProcedure
                dbCommand.Connection.Open()
                dbCommand.Parameters.Clear()
                dbCommand.Parameters.Add("@Departamento", SqlDbType.SmallInt).Value = idDepto
                dbCommand.Parameters.Add("@FechaI", SqlDbType.Date).Value = FechaInic
                dbCommand.Parameters.Add("@FechaF", SqlDbType.Date).Value = FechaFinal
                Dim da As New SqlDataAdapter(dbCommand)
                da.Fill(NewTabla)
                Return NewTabla
            Catch ex As Exception
                RaiseEvent OnError("Query Lectura", ex)
                Return Nothing
            End Try
            MyConec.Close()
        End Function

    Esta función la llamo de la siguiente manera:

    Using objDatos = New ocDatos
       dtTablas = objDatos.VentasFechaPerido(idDepto, FechaInicial, FechaFinal)
    End Using

    Donde idDepto es Integer y FechaInicial y FechaFinal son Date.

    Para instanciar la conección de datos: (el código sólo es una parte)

    Public Class ocDatos

        Implements IDisposable
        Public Event OnError(ByVal strProced As String, ByVal objEx As Exception)
        Private MyConec As SqlConnection

        Public Sub New()

            LaConec = ConfigurationManager.ConnectionStrings("strConeccion")   '.AppSettings("con")
            MyConec = New SqlConnection()
            Variables.StringConection = LaConec.ConnectionString
            MyConec.ConnectionString = LaConec.ConnectionString
        End Sub


    End Class

    Saludos.

    lunes, 3 de febrero de 2014 17:03