SQL Profiler - Configuration pour un développeur - tracer les requêtes SQL de votre application
SQL Profiler est un outil de SQL Server permettant de connaitre toutes les requêtes qui transite dans SQL Server.
Il est très utile pour les développeurs afin de voir les requêtes qui transitent avec la base. En effet, de nos jours, nous avons de plus en plus de framework nous permettant de ne pas écrire de SQL (Linq to SQL/Entities, NHibernate, Genome, ...), il est donc fréquent de faire beaucoup plus de requêtes que nécessaire sans même nous en rendre compte.
La configuration par défaut de cet outil, nous donne un résultat très verbeux, de nombreuses informations inutiles pour un développeur sont affichées. En effet, la plupart du temps, un développeur s'intéresse seulement aux requêtes que son application envoie. De plus, par défaut, toute l'activité du serveur est interceptée, cela veut dire que si vous travaillez sur une base commune à plusieurs développeurs, vous verrez alors les requêtes de tout le monde.
Heureusement, il est possible de configurer cela afin de n'avoir que ce qui intéresse un développeur. Tout d'abord, il faut créer un nouveau template.
Ensuite, renseigner le nom du template et sélectionner un template par défaut
Puis, allez dans l'onglet "Events Selection" afin de sélectionner seulement les données qui nous intéresse. On peut commencer à désactiver les événements de type "Security Audit" qui permettent d'afficher les connexions au serveur, ainsi que l'événement "SQL:BatchStarting" qui rajoute une ligne avant chaque requête, on obtient la même ligne avec l'événement "SQL:BatchCompleted" avec en plus les informations sur les performances de la requête.

Continuons notre filtre, cochons la case "Show all columns" puis appuyons sur le bouton"Colum Filters ...".
La première chose que l'on va filtrer est la provenance des requêtes : le profiler devra nous afficher seulement les requêtes provenant de notre machine, pour cela rajoutons un filtre sur "HostName"
Ensuite, nous allons rajouter un filtre pour ne pas voir les requêtes "exec sp_reset_connection"
Enfin, nous allons rajouter un filtre sur "ApplicationName" afin de ne pas voir les requêtes joué par SQL management studio
A noter, que si vous travaillez avec plusieurs applications, je vous conseille grandement de spécifier le nom de l'application dans votre chaine de connexion, pour cela il faut rajouter le paramètre "Application Name" au niveau de la ConnectionString
<add name="XXXConnectionString" providerName="System.Data.SqlClient"
connectionString="Data Source=XXX;Initial Catalog=XXX;User ID=XXX;Password=XXX" />
Grâce à ce template, vous obtiendrez seulement les informations que vous avez besoin pour tracer les requêtes de votre application.
Je ne suis pas DBA, je partage juste une astuce que j'utilise couramment pour le debug de mes applications, il existe surement d'autres options qui pourraient également intéresser les développeurs.
Avez-vous d'autres astuces à partager avec SQL profiler ?
SQL Profiler est un composant qui arrive à partir de SQL Standard, il ne semble pas disponible pour SQL Express.
PS : Christian, à quand un post sur JavaScript ? ;-)