SQL Server et les vues de gestion dynamique (DMV)

Depuis SQL Server 2005, Microsoft a présenté des vues de gestion dynamique SQL, ou DMV , que vous pouvez utiliser pour surveiller, diagnostiquer les problèmes et optimiser les performances de l’instance ou de la base de données SQL Server.
La vue  sys.dm_exec_requests est une vue de gestion dynamique (DMV) SQL Server qui est très utile dans le diagnostic des problèmes de performances des requêtes.
Par exemple, vous pouvez visualiser toutes les requêtes en cours d’exécution en utilisant l’instruction suivante :

SELECT   a.session_id,a.status,a.start_time,a.command,b.text 
FROM sys.dm_exec_requests a  CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) b 
WHERE a.status = 'running'

 

SELECT d.text AS SQL_statement,login_time,[host_name],[program_name],a.session_id,
client_net_address,a.status,command,DB_NAME(database_id) AS DatabaseName 
FROM sys.dm_exec_requests a INNER JOIN sys.dm_exec_connections b      
ON a.session_id = b.session_id       INNER JOIN sys.dm_exec_sessions c       
ON c.session_id = a.session_id       CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS d     
WHERE a.session_id > 50  AND a.session_id <> @@SPID /* Permet d’exclure session courante */             
ORDER BY a.status


 

Pourcentage d’exécution d’un ordre SQL

En utilisant les vues DMV, il est également possible de suivre le pourcentage d’avancement d’un backup ou d’un restore .
Si la sauvegarde ou la restauration s’exécute à partir d’un travail SQL Server Agent, ou si quelqu’un a lancé le processus à partir d’une autre machine, la vue DMV sys.dm_exec_requests permet  de connaitre la progression de celle-ci.

 
La vue DMV sys.dm_exec_requests peut être utilisée pour suivre les ordes SQL suivants : backup, restore, dbcc checkdb, checktable, dbcc shrinkdatabase, shrinkfile, dbcc indexdefrag, alter index reorganize, rollback operations…
 

Suivi des Verrous

La vue DMV sys.dm_tran_locks renvoie des informations sur les ressources du gestionnaire de verrou actuellement actives.
Chaque ligne représente une demande actuellement active au gestionnaire de verrouillage pour un verrou qui a été accordé ou attend d’être accordé.
Les colonnes du jeu de résultats sont divisées en deux groupes principaux : ressource et requête.
Le groupe de ressources décrit la ressource sur laquelle la demande de verrouillage est effectuée et le groupe de demandes décrit la demande de verrouillage.
Cette DMV est très utile pour identifier les problèmes de verrouillage et de blocage sur vos instances de base de données.

SELECT   a.session_id AS blocked_session_id,b.session_id AS blocking_session_id,c.text AS blocking_text, 
e.wait_type AS blocking_resource,e.wait_duration_ms,d.text AS blocked_text 
FROM sys.dm_exec_requests a      
INNER JOIN sys.dm_exec_requests b
ON  a.blocking_session_id = b.session_id      
CROSS APPLY  sys.dm_exec_sql_text(b.sql_handle) c      
CROSS APPLY  sys.dm_exec_sql_text(a.sql_handle) d      
INNER JOIN sys.dm_os_waiting_tasks e ON     e.session_id = b.session_id


 

Conclusion

Les vues de gestion dynamique (DMV) permettent d’analyser ce qui se passe dans les différentes zones de SQL Server. En les utilisant, nous sommes en mesure de demander au système des informations sur son état de manière beaucoup plus efficace. Les DMV peuvent être utilisés pour optimiser les performances et pour résoudre les problèmes de serveurs et de requêtes.
 

1 réflexion sur “SQL Server et les vues de gestion dynamique (DMV)”

  1. Merci pour ces explications et exemples pertinents sur les DMV 🙂
    O.

Les commentaires sont fermés.