OVH Cloud OVH Cloud

Trace d'une requete deja en cours d'execution

8 réponses
Avatar
zorgb75
Bonjour,

Est-il possible de tracer une requete deja en cours d'execution
(afficher le lot SQL, le type d'acces choisi (table scan, ...)) ?

Un DBCC INPUTBUFFER m'informe sur le lot SQL en cours, un select sur
sysprocesses m'informe du type de commande (cmd) en cours; maintenant
comment obtenir l'integralit=E9 du code SQL en execution, la methode
d'acces, ...

Merci.

8 réponses

Avatar
Cactus Corp.
Bonjour !

Cette question m'intéresse également ! Lorsque l'on parcourt les processus
via entreprise manager, il est possible de cliquer sur 'propriétés' et d'avoir
la requête SQL en cours. Est-ce possible d'obtenir cela via une requête
SQL ?

antonio
Avatar
Fred BROUARD
Voici comment procéder :

DECLARE @Handle BINARY(30)

SELECT @Handle = sql_handle
FROM master..sysprocesses
WHERE spid = @@SPID

SELECT *
FROM ::fn_get_sql(@Handle) AS SQL_COMMANDE

--------- résultat ------------

dbid objectid number encrypted text



------ ----------- ------ ---------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

NULL NULL NULL 0

DECLARE @Handle BINARY(30)
SELECT @Handle = sql_handle
FROM master..sysprocesses
WHERE spid = @@SPID

SELECT *
FROM ::fn_get_sql(@Handle) AS SQL_COMMANDE

(1 ligne(s) affectée(s))

C'est la colonne text de la table retournée par la fonction système fn_get_sql
qui donne le texte de la commande SQL visé par le n° de processus (SPID).

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************

a écrit:
Bonjour,

Est-il possible de tracer une requete deja en cours d'execution
(afficher le lot SQL, le type d'acces choisi (table scan, ...)) ?

Un DBCC INPUTBUFFER m'informe sur le lot SQL en cours, un select sur
sysprocesses m'informe du type de commande (cmd) en cours; maintenant
comment obtenir l'integralité du code SQL en execution, la methode
d'acces, ...

Merci.



Avatar
zorgb75
Merci...
Comment faire maintenant pour visualiser uniquement l'instruction SQL
en cours d'execution (exemple: dans le cas d'une sp avec plusieur
select, un fn_get_sql va me rapatrier le code de la sp, et non l'odre
SQL en cours d'exec) ?

Si il est possible d'obtenir cette info, est-il aussi possible
d'obtenir le descriptif de l'operation en cours (table scan effectué,
index scan, ...), le nombre d'I/O effectué, le nombre de cycle CPU,
etc.... (Tout ca toujours pour l'instruction SQL en cours d'execution).

Merci
Avatar
M.Sauve
DBCC INPUTBUFFER

"Cactus Corp." wrote in message
news:
Bonjour !

Cette question m'intéresse également ! Lorsque l'on parcourt les processus
via entreprise manager, il est possible de cliquer sur 'propriétés' et
d'avoir
la requête SQL en cours. Est-ce possible d'obtenir cela via une requête
SQL ?

antonio




Avatar
zorgb75
Avatar
Cactus Corp.
> DBCC INPUTBUFFER


Ben ca ne retourne pas toute la commande...

La proposition de FB quelques lignes au-dessus me semble
mieux répondre à ce besoin...non ?

antonio
Avatar
zorgb75
Effectivement la ::fn_get_sql rammene l'integralite du batch SQL
executé. Mais le probleme, c'est
que veux obtenir uniquement le lot SQL en cours d'execution (la requete
bref) ainsi que les differentes informations
d'acces aux données, la charge cpu, le nb d'I/O, ...

Exemple:
Une sp comporte 2 requetes SELECT. Le premier ordre SQL utilise un
table scan, et le deuxieme un index scan.
Je lance l'execution de la sp. En cours d'execution, j'aimerai
connaitre l'etat de l'execution:
connaitre la requete en cours d'exec : (2eme SELECT par exemple), le
type d'acces (plan) (index scan par exemple), etc...

j'instiste bien sur le fait que je ne peux pas lancer le profiler avant
l'execution de la sp (car elle peut etre appellee à n'importe quel
moment).

Merci;
Avatar
B.Mohamed
SQL Profiler

wrote in message
news:
Bonjour,

Est-il possible de tracer une requete deja en cours d'execution
(afficher le lot SQL, le type d'acces choisi (table scan, ...)) ?

Un DBCC INPUTBUFFER m'informe sur le lot SQL en cours, un select sur
sysprocesses m'informe du type de commande (cmd) en cours; maintenant
comment obtenir l'integralité du code SQL en execution, la methode
d'acces, ...

Merci.