Suivi SQL Server 2012 Demandes lentes / requêtes qui provoquent le blocage
-
29-09-2020 - |
Question
J'utilise SQL Server 2012 et je tiens à saisir les requêtes qui prennent plus de temps à exécuter avec les requêtes qui causent le blocage sur le serveur.Lorsque je regarde le serveur pour les requêtes en cours d'exécution pour identifier tout blocage, je ne trouve aucune requête.
J'ai configuré des événements étendus et obtenez seulement des informations de haut niveau de cela.Les tables qui obtiennent des délais d'attente, mais j'ai besoin d'informations qui en indiquent davantage sur les requêtes qui ont provoqué les délais d'attente.
Toute suggestion ???
La solution
Vous pouvez utiliser le DMV SYS. dm_exec_query_stats et sys.dm_exec_requests Analyser les requêtes consommatrices de ressources avec leur durée pour la longue:
Utilisez la requête ci-dessous pour capturer la même chose:
-- Execute the query inside target database
SELECT TOP 10
qs.total_elapsed_time / qs.execution_count / 1000000.0 AS average_seconds,
qs.total_elapsed_time / 1000000.0 AS total_seconds,
qs.execution_count,
SUBSTRING (qt.text,qs.statement_start_offset/2,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) AS individual_query,
o.name AS object_name,
DB_NAME(qt.dbid) AS database_name
FROM
sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
LEFT OUTER JOIN sys.objects o ON qt.objectid = o.object_id
WHERE
qt.dbid = DB_ID()
ORDER BY
average_seconds DESC;
En outre, suggérerait si vous utilisez des événements étendus, vous pouvez capturer la même chose. Pour plus d'informations sur la façon de configurer et d'utiliser la même chose, veuillez lire ce livre blanc de Jonathan SQL Server 2008 Événements étendus qui devraient vous aider à alon avec ici
En outre, lorsque les requêtes sont exécutées et que font tous le processus à l'arrière-plan et vérifier si le blocage est vraiment là-bas avec des attentes particulières, vous suggérez d'utiliser sp_whoisactive de
De plus, si vous préférez utiliser le profileur, vous pouvez suivre et résoudre les mêmes problèmes que ceux expliqués dans Comment identifier les requêtes de course lentes avec le profileur SQL