Forums Últimos mensajes - Powered by IBM
 
Tags Palabras claves

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.
 

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.

Preguntas similares