Comment afficher les requêtes exécutées dans SQL Server Management Studio?

Je suis nouveau dans SQL Server Management Studio et je me demande: existe-t-il un moyen de voir quelles requêtes ont été exécutées sur une base de données?

Dans le moniteur D'activité, il y a un rapport" requêtes coûteuses récentes " mais je suppose que ce ne sont pas toutes les requêtes puisque je ne vois pas celles que j'ai exécutées.

Je cours SQL Server Express 2008 v 10.0.1600.22.

27
demandé sur Brett Caswell 2010-03-15 21:52:56

8 réponses

Utilisez SQL Profiler et utilisez un filtre pour obtenir les requêtes les plus coûteuses.

19
répondu Benjamin Ortuzar 2010-03-15 18:56:08

Utilisez le moniteur D'activité. C'est la dernière barre d'outils dans la barre supérieure. Il vous montrera une liste de "requêtes coûteuses récentes". Vous pouvez double-cliquer pour voir le plan d'exécution, etc.

16
répondu John Saunders 2014-08-08 01:55:16

Si vous voulez voir les requêtes qui sont déjà exécutées, il n'y a pas de moyen par défaut pris en charge pour le faire. Il y a quelques solutions de contournement que vous pouvez essayer, mais ne vous attendez pas à trouver tous.

Vous ne pourrez pas voir les instructions SELECT à coup sûr, mais il existe un moyen de voir d'autres commandes DML et DDL en lisant le journal des transactions (en supposant que la base de données est en mode de récupération complète).

Vous pouvez le faire en utilisant les commandes DBCC LOG ou fn_dblog ou un lecteur de journal tiers comme ApexSQL Log (Notez cet outil livré avec un prix)

Maintenant, si vous prévoyez d'auditer des instructions qui vont être exécutées à l'avenir, vous pouvez utiliser SQL Profiler pour tout attraper.

15
répondu Dwoolk 2013-06-11 09:46:21

Vous avez besoin D'un profileur SQL, qui s'exécute en dehors de SQL Management Studio. Si vous avez une version payante de SQL Server (comme l'édition développeur), il devrait être inclus dans cela comme un autre utilitaire.

Si vous utilisez une édition gratuite (SQL Express), ils ont des profils freeware que vous pouvez télécharger. J'ai utilisé le profileur D'AnjLab (disponible à http://sites.google.com/site/sqlprofiler), et cela semblait bien fonctionner.

10
répondu Mike Mooney 2010-03-15 18:58:02
     SELECT *  FROM sys.dm_exec_sessions es
  INNER JOIN sys.dm_exec_connections ec
      ON es.session_id = ec.session_id
  CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) where es.session_id=65 under see text contain...
4
répondu dinesh vishe 2013-04-25 06:29:38

Si vous souhaitez que SSMS conserve un historique de requêtes, utilisez le module complémentaire SSMS Tool Pack .

Si vous souhaitez surveiller le serveur SQL pour les requêtes en cours d'exécution, utilisez SQL PRofiler comme d'autres l'ont déjà suggéré.

3
répondu Remus Rusanu 2010-03-15 19:17:02

Exécutez la requête suivante depuis Management Studio sur un processus en cours:

DBCC inputbuffer( spid# )

Cela renverra le SQL en cours d'exécution sur la base de données pour le SPID fourni. Notez que vous avez besoin des autorisations appropriées pour exécuter cette commande.

C'est mieux que d'exécuter une trace car elle cible un SPID spécifique. Vous pouvez voir si elle est longue en fonction de son CPUTime et DiskIO.

Exemple pour obtenir les détails de SPID 64:

DBCC inputbuffer(64)
3
répondu Shez 2011-09-05 15:57:44

Requête plus claire, ciblant les requêtes SQL de Studio est:

SELECT text  FROM sys.dm_exec_sessions es
  INNER JOIN sys.dm_exec_connections ec
      ON es.session_id = ec.session_id
  CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) 
  where program_name like '%Query'
3
répondu zhrist 2015-06-04 12:41:38