- Utilisation de SQL Server Profiler (dans le menu outils dans SSMS) pour créer une trace qui enregistre ces événements:
RPC:Completed
SP:Completed
SP:StmtCompleted
SQL:BatchCompleted
SQL:StmtCompleted
2. Vous pouvez commencer avec la norme du modèle de trace et de le tailler. Vous n'avez pas spécifié si c'est pour avoir une base de données spécifique ou l'ensemble du serveur, si c'est pour spécifique de la Db, inclure le DatabaseID colonne et de définir un filtre pour votre DB (SELECT DB_ID('dbname')
). Assurez-vous que la logique Lit les données de la colonne est inclus pour chaque événement. La trace pour vous connecter à un fichier. Si vous quittez cette trace pour fonctionner sans surveillance dans le fond, c'est une bonne idée de fixer un maximum de trace de la taille du fichier de dire 500 mo ou 1 GO si vous avez beaucoup de place (tout dépend de la façon dont beaucoup d'activité, il y a sur le serveur, de sorte que vous avez à le sucer et voir).
Brièvement démarrer la trace et ensuite de la mettre en pause. Goto Fichier->Exporter->Script de Définition de la Trace et choisir votre version DB, et l'enregistrer dans un fichier. Vous avez maintenant un script sql qui crée une trace qui a beaucoup moins de frais généraux que de courir à travers le profileur de l'interface graphique. Lorsque vous exécutez ce script, il sera de sortie de la Trace ID (habituellement @ID=2
); à noter que cette baisse.
-
Une fois que vous avez un fichier de trace (.trc) (soit la trace terminée à cause d'atteindre la taille maximale de fichier ou vous avez arrêté la trace d'exécution à l'aide de
EXEC sp_trace_setstatus @ID, 0
EXEC sp_trace_setstatus @ID, 2
Vous pouvez charger la trace dans le profileur, ou de l'utilisation ClearTrace (très pratique) ou de le charger dans un tableau comme ceci:
SELECT * INTO TraceTable
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default)
Ensuite, vous pouvez exécuter une requête afin d'agréger les données, tels que celui ci:
SELECT COUNT(*) AS TotalExecutions,
EventClass, CAST(TextData as nvarchar(2000))
,SUM(Duration) AS DurationTotal
,SUM(CPU) AS CPUTotal
,SUM(Reads) AS ReadsTotal
,SUM(Writes) AS WritesTotal
FROM TraceTable
GROUP BY EventClass, CAST(TextData as nvarchar(2000))
ORDER BY ReadsTotal DESC
Une fois que vous avez identifié le coûteux requêtes, vous pouvez générer et de l'examen des plans d'exécution.