Saber qué procedure (y sus parámetros) se está ejecutando

08/08/2003 - 11:51 por Victor | Informe spam
Hola.

Si mal no recuerdo, creo que hay un comando (que no recuerdo) para
saber qué Stored Procedure se está ejecutando.

Mi problema es que un SP llama a otro SP, el cual puede llamar a otro
SP, y así hasta 4 SP. Resulta que el último actualiza un contador es
una tabla en la que puede llegar a ser negativo. Y esto es malo para
mi.

Se que puedo poner una regla en el campos de la tabla que no deje
negativos, pero lo que necesito es "rastrear" esta cadena de SP y
poder recojer el SP inicial y los parámetros.

¿Se puede?

Muchas gracias.

Preguntas similare

Leer las respuestas

#6 Victor
13/08/2003 - 16:35 | Informe spam
Lo he probado, y puede ser que sí que sirva en cuanto sepa cómo
interpretarlo bien.


On Tue, 12 Aug 2003 18:33:04 -0600, "Javier Loria\(MVP\)"
wrote:

Hola Victor:
No, pero prueba lo siguiente, abre el Profiler de SQL, escoge FILE-NEW
TRACE, Autentica a tu usuario administrador, luegoseleccionas la pestana de
EVENTs, oprime el buton de Remove hasta que no quede nada del lado derecho.
Busca del lado izquierdo en la seccion de Stored Procedures y agrega
SP:Starting (Ojo que hay un RPC:Starting que no es ese) y oprimer ADD, por
ultimo lo ejecutas con RUN. Si te gusta lo que captura podemos ver como
creamos ese codigo en tu aplicacion.
Saludos,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Victor escribio:
Casi es lo que necesito: en el caso de sppadre pasara parámetros a
sphijo, ¿cómo los puedo recuperar?

On Mon, 11 Aug 2003 20:23:53 -0600, "Javier Loria\(MVP\)"
wrote:

Hola Victor:
El concepto de SPID es System Process ID y esta asociado con el
concepto de conexion. En principio a cada conexion se le asigna un
SPID, solo que debe tenerse cuidado porque son "reciclables".
Entonces un si un SP llama a otro SP siempre tienen el mismo
SPID. En tu caso para el procedimiento sphijo, @@spid siempre es
igual a @padre. No se si esto te sirve, pero puedes probar
agregando la siguiente sentencia, al final de tu procedimiento hijo,
y veras que el la columna EventInfo debe venir la informacion de
como se invoco el primer procedimiento:

DBCC INPUTBUFFER(@@spid)

Saludos,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Victor escribio:
Vale.

He creado dos SP:

CREATE PROCEDURE dbo.sppadre AS
exec dbo.sphijo @@spid
GO


CREATE PROCEDURE dbo.sphijo
(
@padre int
)
AS

declare @id int

select 'SPID padre:', @padre, ' SPID hijo: ', @@spid
exec sp_who @padre
select * from master.dbo.sysprocesses where spid = @padre or ecid >>>> @padre

GO

sppadre llama a sphijjo pasándole su SPID. Me ha parecido entender
que los dos SP tienen SPIDs diferentes, y que sphijo cuelga de
sppadre.

Pero el select de sphijo que muestra los SPIDs, me indica el mismo
para los dos ¿?

Y Al ejecutar sp_who, creía que me saldría una línea para el SPID de
sppadre, y otra para sphijo, indicando que éste depende de sppadre.
Pues no me sale la de sphijo (supongo que porque el SPID es el
mismo).

Y el select sobre sysprocesses es una prueba para ver que me salía.

¿No han de ser SPIDs diferentes? ¿Dónde me lio?



On Fri, 8 Aug 2003 09:21:33 -0300, "Emilio Boucau"
wrote:

Victor,

mira en los Books On Line:

fn_get_sql
DBCC INPUTBUFFER









email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida