Question

Nous avons cette situation récurrente où plusieurs fois par semaine, notre application cesse de répondre. Ce que je voudrais faire est d'être en mesure d'afficher le texte de la requête en cours d'exécution sur SQL Server.

Je peux utiliser sp_who pour voir les connexions ouvertes, mais il ne présente pas le texte de la requête réelle.

Si je peux voir la requête qui gèle ma base de données, je peux avoir un point de départ pour l'optimisation.

Il est arrivé il y a quelques minutes et notre système admin a dû redémarrer la boîte. Ce redémarrage est pas durable.

Que dois-je faire?

Je voudrais voir le texte réel des requêtes qui sont en cours d'exécution sur mon serveur.

SQL Server 2000

Était-ce utile?

La solution

utiliser ce alors que le bloc se passe:

SELECT
    r.session_id AS spid
        ,r.cpu_time,r.reads,r.writes,r.logical_reads 
        ,r.blocking_session_id AS BlockingSPID
        ,LEFT(OBJECT_NAME(st.objectid, st.dbid),50) AS ShortObjectName
        ,LEFT(DB_NAME(r.database_id),50) AS DatabaseName
        ,s.program_name
        ,s.login_name
        ,OBJECT_NAME(st.objectid, st.dbid) AS ObjectName
        ,SUBSTRING(st.text, (r.statement_start_offset/2)+1,( (CASE r.statement_end_offset
                                                                  WHEN -1 THEN DATALENGTH(st.text)
                                                                  ELSE r.statement_end_offset
                                                              END - r.statement_start_offset
                                                             )/2
                                                           ) + 1
                  ) AS SQLText
    FROM sys.dm_exec_requests                          r
        JOIN sys.dm_exec_sessions                      s ON r.session_id = s.session_id
        CROSS APPLY sys.dm_exec_sql_text (sql_handle) st
    WHERE r.session_id!=@@SPID

listera tous SPID actifs, qui les bloquent et SQL de chaque SPID

EDIT cette requête est pour 2005+ SQL Server, question initiale n'a pas déclarer SQL Server 2000

Autres conseils

Voir l'article Comment surveiller le blocage dans SQL Server 2005 et SQL Server 2000 pour la définition de sp_blocker_pss08 (un script compatible SQL Server 2000).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top