Bonjour,
j'aimerais savoir s'il y a un moyen pour afficher les dernières requêtes SQL exécutés sur SQL SERVER...
j'utilise le Management Studio [Toutes les versions ]
Merci bcp de m'aider
Bonjour,
j'aimerais savoir s'il y a un moyen pour afficher les dernières requêtes SQL exécutés sur SQL SERVER...
j'utilise le Management Studio [Toutes les versions ]
Merci bcp de m'aider
Bonjour,
Non car ce genre d'événement n'est pas historisé par défaut sur SQL Server.
Vous pouvez cependant l'implémenter selon différentes méthodes existantes avec SQL Server.
++
Bonjour,
Et alors Mike, on oublie le Profiler et :
@++
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
16
17
18 SELECT QS.creation_time Creation, QS.last_execution_time LastExec, QS.plan_generation_num NbComp, QS.execution_count NbExec, OBJECT_NAME(SQL.objectid) Procedures, SUBSTRING ( SQL.text, QS.statement_start_offset / 2 + 1, ( CASE WHEN QS.statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(max), SQL.text)) * 2 ELSE QS.statement_end_offset END - QS.statement_start_offset ) / 2 + 1 ) AS Instruction FROM sys.dm_exec_query_stats QS CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) SQL
Oui il faut donc implémenter une trace profiler pour cela ... ou alors j'ai peut etre loupé qqch ou je suis fatigué ...
Concernant la DMV sys.dm_exec_query_stats celle-ci ne garantit pas forcement de voir les dernières requêtes exécutées (il faut voir bien entendu ce qu'on appelle les dernières requêtes ...)
La BOL
++Renvoie les statistiques sur les performances des agrégats pour les plans de requêtes mis en cache. La vue contient une ligne par plan de requêtes ; la durée de vie de la ligne est liée au plan lui-même. Lorsqu'un plan est supprimé du cache, la ligne correspondante est éliminée de cette vue.
historique des 50 dernières requetes. Source :Documentation en ligne de Microsoft SQL Server 2008
© 2008 Microsoft Corporation.A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT TOP 50 total_worker_time/execution_count AS [Avg CPU Time], SUBSTRING(st.text, (qs.statement_start_offset/2)+1,((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st ORDER BY total_worker_time/execution_count DESC;
Etienne ZINZINDOHOUE
ça a l'air ...Envoyé par Mikedavem
Normalement une requête qui vient d'être exécutée est forcément compilée puis stockée dans le cache de plan (dans le cas présent, peu importe pour combien de temps )Envoyé par Mikedavem
@++
Non je ne suis pas d'accord car ce n'est pas assez précis ... car la requête est un classement des 50 requêtes les plus consommatrices par exécutionhistorique des 50 dernières requetes.
Bon tu vas dire que je pousse le bouchon loin mais rien ne garantit que quelqu'un ne fasse pas un RESET des statistiques , d'une pression mémoire qui éradique certaines de tes plans compilés etc ... d'une option changée qui te supprime le plan en cache .. il y a pas mal de paramètres qui sont suceptibles de supprimer un plan en cache ..Normalement une requête qui vient d'être exécutée est forcément compilée puis stockée dans le cache de plan (dans le cas présent, peu importe pour combien de temps )
Bon évidemment y'a quand même de grandes chances de retrouver le 50 dernières requêtes ... mais je ne trouve pas que cela garantisse à 100% l'information :-)
Concernant le profiler raffraichit moi la mémoire alors (pour une implémentation par défaut dans SQL Server) ...
++
et aussi les dernières requêtes de chaque session....
A +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT session_id, Q.* FROM sys.dm_exec_connections AS C CROSS APPLY sys.dm_exec_sql_text (C.most_recent_sql_handle) AS Q
Oui et Non
Oui si on garde le
Non, parce que qu'on peut avoir les 50 dernières requêtes
Code : Sélectionner tout - Visualiser dans une fenêtre à part ORDER BY total_worker_time/execution_count DESC
en tenant compte de la date/heure d'exécution
Conclusion : Pour avoir les 50 dernières requêtes
Code : Sélectionner tout - Visualiser dans une fenêtre à part ORDER BY creation_time DESC
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT TOP 50 creation_time, total_worker_time/execution_count AS [Avg CPU Time], SUBSTRING(st.text, (qs.statement_start_offset/2)+1,((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st ORDER BY creation_time DESC;
Etienne ZINZINDOHOUE
Bonjour,
Déjà merci pour ce code T-SQL qui m'a beaucoup aidé.
Je voudrais savoir s'il y a avait un moyen de faire une jointure avec la session de l'utilisateur. Car je n'arrive pas a trouver le champ spid sur le résultat de votre code T-SQL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT TOP 50 creation_time, total_worker_time/execution_count AS [Avg CPU Time], SUBSTRING(st.text, (qs.statement_start_offset/2)+1,((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st ORDER BY creation_time DESC;
Ci-après les élements que je souhaiterais joindre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select spid, login_time, hostname, program_name, nt_domain, nt_username, loginame from master..sysprocesses where dbid = db_id(coalesce('MA BASE',db_name())) and spid <> @@spid
Yahuuuu,
Merci les gars vous m'avez sauvé une quasi matinée de travail!!
Grâce à vos propositions j'ai pu récupérer le code d'une requête sur laquelle j'ai beaucoup travaillé mais pour laquelle je n'avais pas encore créer de vue! Bien sûr c'est le moment où Management Studio a décidé de planter!
Donc MERCI!
Julien
Bonjour vous avez réussi à faire la jointure avec la session id svp ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager