Utiliser SQL Server Profiler (dans le menu outils SSMS) pour créer une trace qui enregistre ces événements:
RPC:Completed
SP:Completed
SP:StmtCompleted
SQL:BatchCompleted
SQL:StmtCompleted
Vous pouvez commencer par le modèle de trace standard et élaguer. Vous n'avez pas spécifié si c'était pour une base de données spécifique ou le serveur entier, si c'est pour des Db spécifiques, incluez la colonne DatabaseID et définissez un filtre à votre DB (SELECT DB_ID('dbname')
). Assurez-vous que la colonne de données Lectures logiques est incluse pour chaque événement. Définissez la trace pour se connecter à un fichier. Si vous laissez cette trace s'exécuter sans surveillance en arrière-plan, il est recommandé de définir une taille de fichier de trace maximale de 500 Mo ou 1 Go si vous disposez de suffisamment d'espace (tout dépend de l'activité du serveur, vous devrez le sucer et voir).
Lancez brièvement la trace, puis mettez-la en pause. Aller à Fichier-> Exporter-> Script Trace Définition et choisissez votre version DB, et enregistrer dans un fichier. Vous avez maintenant un script sql qui crée une trace qui a beaucoup moins de frais que l'exécution de l'interface graphique du profileur. Lorsque vous exécutez ce script, il affiche l'ID de trace (généralement @ID=2
); notez ceci.
Une fois que vous avez un fichier de trace (.trc) (soit la trace terminée en raison d'atteindre la taille maximale de fichier ou vous arrêté la trace en cours d'exécution à l'aide
EXEC sp_trace_setstatus @ID, 0
EXEC sp_trace_setstatus @ID , 2
Vous pouvez charger la trace dans profileur, ou utilisez ClearTrace (très pratique) ou le charger dans une table 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 pour agréger les données telles que celle-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é les requêtes coûteuses, vous pouvez générer et examiner les plans d'exécution réels.
cheers mitch! semble un peu plus complexe que ce que je pensais était nécessaire, mais je vais certainement y aller un coup :) à la vôtre! –
Été dehors - je m'attends à avoir une chance vers la fin de nov .. et alors je marquerai la question ou demanderai plus de q. –