Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/12/2010, 16h12   #1
Membre habitué
 
Inscription : janvier 2008
Messages : 212
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 212
Points : 135
Points : 135
Par défaut DMV - quelque chose m'échappe.

* 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 :
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 :
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
Philippe Robert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 16h33   #2
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Au niveau de la DMV sys.dm_exec_requests : C'est le statut de la requête en cours
Au niveau de la DMV sys.dm_exec_sessions : C'est le statut d'une ou plusieurs demandes en cours

A priori pour l'une ou l'autre tu devrais avoir la même chose ... a moins que le statut pour la demande ne change souvent .. a voir

Perso je ne filtre pas sur cette colonne pour voir la progression d'un restore .. donc il faudrait avoir la valeur du statut sans le filtre pour cette commande ... tu l'as peut être déjà fait ?

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 16h55   #3
Membre habitué
 
Inscription : janvier 2008
Messages : 212
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 212
Points : 135
Points : 135
En fait, je suis en train d'approfondir mes connaissances sur les DMV. Etant donné que je souhaite savoir ce qui ce passe sur le serveur a tout instant, j'ai profité d'une restauration pour voir sa visibilité dans les DMV.
Dans la reqête 1, elle n'a jamais été visible, et pourtant, la restauration a durée plus de deux heures.
Mais, il me faudra tester cette requête-ci. Elle permet de déterminer l'estimation de fin d'un backup ou d'une restauration.


Code :
1
2
3
4
5
6
7
8
9
10
 
SELECT	command,
	DB_NAME(database_ID) AS dbname,
	'EstimatedEndTime' = Dateadd(ms,sr.estimated_completion_time,Getdate()),
	'EstimatedSecondsToEnd' = sr.estimated_completion_time / 1000,
	'EstimatedMinutesToEnd' = sr.estimated_completion_time / 1000 / 60,
		'BackupStartTime' = sr.start_time,
		'PercentComplete' = sr.percent_complete
FROM	sys.dm_exec_requests sr
WHERE	sr.command IN ('BACKUP DATABASE','RESTORE DATABASE')
Il me restera à voir si la colonne Status de la DMV sys.dm_exec_requests change.
Philippe Robert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 03h41   #4
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 662
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 662
Points : 8 693
Points : 8 693
Bonjour,

Voyez le petit billet que j'ai publié ici

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 16h43   #5
Membre habitué
 
Inscription : janvier 2008
Messages : 212
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 212
Points : 135
Points : 135
Citation:
Envoyé par elsuket Voir le message
Bonjour,

Voyez le petit billet que j'ai publié ici

@++

Sympa la DMV.
Je l'adopte.
Philippe Robert est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h28.


 
 
 
 
Partenaires

Hébergement Web