15 votes

SQL Server - Processus suspendu - Requête SPID

Comment puis-je trouver la requête associée qui est exécutée si j'ai le SPID. J'essaie de trouver quelle requête est associée puisque le processus semble être bloqué.

18voto

user2661347 Points 41
--Find Current SQL Statements that are Running
SELECT   SPID           = er.session_id
        ,STATUS         = ses.STATUS
        ,[Login]        = ses.login_name
        ,Host           = ses.host_name
        ,BlkBy          = er.blocking_session_id
        ,DBName         = DB_Name(er.database_id)
        ,CommandType    = er.command
        ,ObjectName     = OBJECT_NAME(st.objectid)
        ,CPUTime        = er.cpu_time
        ,StartTime      = er.start_time
        ,TimeElapsed    = CAST(GETDATE() - er.start_time AS TIME)
        ,SQLStatement   = st.text
FROM    sys.dm_exec_requests er
    OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st
    LEFT JOIN sys.dm_exec_sessions ses
        ON ses.session_id = er.session_id
    LEFT JOIN sys.dm_exec_connections con
        ON con.session_id = ses.session_id
WHERE   st.text IS NOT NULL

12voto

SQLMenace Points 68670

Quelle version de sql server ? pour 2000 et plus vous pouvez faire

dbcc inputbuffer (spid)

Cela donnera les 255 premiers caractères

remplacer spid par le numéro numérique pour spid

pour les versions 2005 et ultérieures, remplacez @@SPID par le spid que vous recherchez.

select dest.*
from  sys.dm_exec_requests as der
             cross apply sys.dm_exec_sql_text (der.sql_handle) as dest
where session_id = @@spid

3voto

Martin Smith Points 174101

Supposant SQL Server 2005+

SELECT
    CASE
        WHEN statement_end_offset = -1
        THEN text
        ELSE SUBSTRING(text,statement_start_offset/2,(statement_end_offset- statement_start_offset)/2)
    END, *
FROM    sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle)
WHERE session_id = <whatever>

Vous pouvez télécharger le " Qui est actif ? "qui rassemble beaucoup plus d'informations que cela.

1voto

Abe Miessler Points 34869

Si vous le regardez dans le moniteur d'activité, vous devriez pouvoir trouver le SQL associé au SPID en faisant un clic droit et en sélectionnant "détails".

Voici quelques liens pour vous aider à démarrer :

Vous pouvez également le tuer à partir de là en dernier recours.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X