SQL Server Profiler - Comment filtrer la trace pour afficher uniquement les événements d'une seule base de données?

381

Comment limiter une trace de SQL Server Profiler à une base de données spécifique? Je ne vois pas comment filtrer la trace pour ne pas voir les événements de toutes les bases de données sur l'instance à laquelle je me connecte.

ConcernedOfTunbridgeWells
la source

Réponses:

574

Sous Propriétés de trace> onglet Sélection d'événements> sélectionnez afficher toutes les colonnes. Maintenant, sous les filtres de colonne, vous devriez voir le nom de la base de données. Entrez le nom de la base de données pour la section Like et vous ne devriez voir les traces que pour cette base de données.

Gulzar Nazim
la source
8
Je ne sais pas s'il s'agit d'un problème courant, mais lorsque j'exécute le profileur, le nom de la base de données est vide pour la plupart des valeurs que je trace. Je dois utiliser la colonne DatabaseID et trouver les valeurs correctes à saisir en interrogeant la table sysdatabases dans la base de données master
Jim Birchall
34
Pour trouver l'ID de la base de données: SELECT [nom], [dbid] FROM [master]. [Dbo]. [Sysdatabases] ORDER BY [nom]
Simon
1
Dépend également du modèle que vous sélectionnez, le cas échéant. +1
beaudetious
2
Et vous devez le faire en beforecommençant la trace. Si vous le faites après - le champ ne sera pas modifiable!
DarkWalker
2
N'oubliez pas d'arrêter le traçage ou de commencer avant de l'exécuter.
Fery
42

Dans SQL 2005, vous devez d'abord afficher la colonne Nom de la base de données dans votre trace. La chose la plus simple à faire est de choisir le modèle de réglage, auquel cette colonne a déjà été ajoutée.

En supposant que vous avez sélectionné le modèle de réglage, pour filtrer:

  • Cliquez sur l'onglet "Sélection d'événements"
  • Cliquez sur le bouton "Filtres de colonne"
  • Cochez Afficher toutes les colonnes (côté droit vers le bas)
  • Sélectionnez "DatabaseName", cliquez sur le signe plus à côté de Like dans le volet droit et saisissez le nom de votre base de données.

J'enregistre toujours la trace dans une table afin de pouvoir effectuer des requêtes COMME sur les données de trace après coup.

Prix ​​Todd
la source
8

Par expérience, j'ai pu observer ceci:

Lorsque SQL Profiler 2005 ou SQL Profiler 2000 est utilisé avec une base de données résidant dans SQLServer 2000 - le problème mentionné persiste, mais lorsque SQL Profiler 2005 est utilisé avec une base de données SQLServer 2005, cela fonctionne parfaitement!

En résumé, le problème semble être répandu dans SQLServer 2000 et corrigé dans SQLServer 2005.

La solution au problème lors de l'utilisation de SQLServer 2000 est (comme expliqué par wearejimbo)

  1. Identifiez le DatabaseID de la base de données que vous souhaitez filtrer en interrogeant la table sysdatabases comme ci-dessous

    SELECT * 
    FROM master..sysdatabases 
    WHERE name like '%your_db_name%'   -- Remove this line to see all databases
    ORDER BY dbid
  2. Utilisez le filtre DatabaseID (au lieu de DatabaseName) dans la fenêtre Nouvelle trace de SQL Profiler 2000

Praveen
la source
4

Dans les propriétés de trace, cliquez sur l' onglet Sélection d'événements en haut à côté de Général . Cliquez ensuite sur Filtres de colonne ... en bas à droite. Vous pouvez ensuite sélectionner les éléments à filtrer, tels que TextDataou DatabaseName.

Développez le nœud Like et entrez votre filtre avec les %signes de pourcentage comme %MyDatabaseName%ou %TextDataToFilter%. Sans les %%signes, le filtre ne fonctionnera pas.

Assurez-vous également de cocher la case Exclure les lignes qui ne contiennent pas de valeurs ' Si vous ne trouvez pas le champ que vous cherchez à filtrer, par exemple DatabaseNameallez dans l' onglet Général et modifiez votre modèle , un champ vierge devrait contenir tous les champs.

6dev6il6
la source
1

Créez un nouveau modèle et vérifiez DBname. Utilisez ce modèle pour votre fichier de trace.


la source