* Bonjour, *

J'ai du procéder à un restauration d'une base de données.

Pendant ce temps, j'ai lancé le code suivant, afin de vérifier les requêtes en cours d'exécution :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
SELECT    r.Start_time,
    r.Status,
    s.text
FROM    sys.dm_exec_requests  AS r
    OUTER APPLY    sys.dm_exec_sql_text(r.sql_handle) s
    LEFT JOIN    sys.dm_exec_connections AS c
            ON    r.session_id = c.session_id
WHERE  r.STATUS = 'running'
Et curieusement, mon instruction de restauration n'était pas visible dans la liste des processus en cours d'exécution (même en exécutant la requête plusieurs fois).

J'ai donc exécuté le code suivant :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SELECT  ec.client_net_address,                                                 
            es.[program_name],
            es.[host_name],
            es.login_name,
            st.text,
            es.status,
            es.last_request_start_time,
            es.last_request_end_time
FROM    sys.dm_exec_sessions AS es
            INNER JOIN sys.dm_exec_connections AS ec
                       ON es.session_id = ec.session_id
         CROSS APPLY sys.dm_exec_sql_text(most_recent_sql_handle) st
WHERE    es.status = 'running'
ORDER BY es.Login_Name
Et là, mon processus de restauration est bien présent dans la liste.

J'en conclu donc que le status "running" de la DMV sys.dm_exec_requests n'est pas le même que celui de la DMV sys.dm_exec_sessions.

Qu'en pensez-vous ?


PS. Je suis en SQL 2005 SP3