sp_prepexec;1

24/03/2008 - 18:12 por Penta | Informe spam
Estimados.
Tengo una consulta que es para ver los bloqueos, mi sistema esta medio
lento y una de las cosas que me muestra de manera recurrente es esto:

Spid Bloqueador: Nº
Status: Runnable
EventType: RPC Event
Parameters: 0
EventInfo: sp_prepexec;1


A que se refiere ?? Esto es debido a procedimientos dinamicos

Atte.
Penta.

Preguntas similare

Leer las respuestas

#1 Jesús López
24/03/2008 - 18:41 | Informe spam
sp_prepexec es un procedimiento almacenado que lo llama el API de acceso a
datos. Lo que significa es que la aplicación cliente quiere ejecutar una
consulta preparada. Si la aplciación cliente está usando .NET sería un
código como este:

Dim cn As New SqlConnection("La cadena de conexión")
Dim cmd As New SqlCommand("la consulta", cn)
cmd.Parameters.Add()
cmd.Parameters.Add(...)
...
cn.Open()
cmd.Prepare() ' <- aquí indicamos que queremos consultas preparadas.

' Ejecutamos la consulta por primera vez
cmd.Parameters("@Param1").Value = ValorParam1
cmd.Parameters("@Param2").Value = ValorParam2
cmd.ExecuteNonQuery() ' la primera vez que se ejecuta produce la llamada a
sp_prepexec

'Ejecutamos la consulta por segunda vez sin haber cerrado la conexión
cmd.Parameters("@Param1").Value = OtroValorParam1
cmd.Paramteers("@Param2").Value = OtroValorParam2
cmd.ExecuteNonQuery(() ' las siguientes veces produce llamadas a sp_execute


cn.Close()

Si la aplicación cliente está bien diseñada, entoces sólo preparará aquellas
consultas que vaya a ejecutar luego más de una vez. No tiene sentido
preparar una consulta que sólo va a ejecutarse una vez.

En los parámetros de sp_prepexec se incluye la consulta a preparar y
ejecutar, así como la definición de los parámetros de la consulta si los
tiene, y el valor de los parámetros. Devuelve un identificador o handle de
la consulta preparada que luego se usa con sp_execute.

A sp_execute se le pasa como parámetro el handle devuelto por sp_prepexec y
el valor de los parámetros de la consulta si los tiene. A sp_execute ya no
hace falta pasarle de nuevo la consulta ni la definición de los parámetros.
Es por tanto una llamada muy compacta y eficiente. El plan de ejecución
creado en sp_prepexec se reutiliza y se localiza rápida y eficientemente
mediante el handle pasado a sp_execute.

Saludos:

Jesús López
www.solidq.com





"Penta" escribió en el mensaje
news:
Estimados.
Tengo una consulta que es para ver los bloqueos, mi sistema esta medio
lento y una de las cosas que me muestra de manera recurrente es esto:

Spid Bloqueador: Nº
Status: Runnable
EventType: RPC Event
Parameters: 0
EventInfo: sp_prepexec;1


A que se refiere ?? Esto es debido a procedimientos dinamicos

Atte.
Penta.
Respuesta Responder a este mensaje
#2 Penta
24/03/2008 - 18:53 | Informe spam
Muy detallada la respuesta, lo raro es que no tenemos ninguna
aplicacion NET solo ASP y VB6 :(

Atte.
Penta.
Respuesta Responder a este mensaje
#3 Jesús López
24/03/2008 - 19:05 | Informe spam
En ASP y VB6 es más o menos lo mismo pero con otro API, en este caso con ado
clásico. Aquí tienes un ejemplo:

http://msdn2.microsoft.com/en-us/library/aa905910(SQL.80).aspx



Saludos:

Jesús López



"Penta" escribió en el mensaje
news:
Muy detallada la respuesta, lo raro es que no tenemos ninguna
aplicacion NET solo ASP y VB6 :(

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