Cela vous montrera les SPID les plus longs sur un serveur SQL 2000 ou SQL 2005:
select
P.spid
, right(convert(varchar,
dateadd(ms, datediff(ms, P.last_batch, getdate()), '1900-01-01'),
121), 12) as 'batch_duration'
, P.program_name
, P.hostname
, P.loginame
from master.dbo.sysprocesses P
where P.spid > 50
and P.status not in ('background', 'sleeping')
and P.cmd not in ('AWAITING COMMAND'
,'MIRROR HANDLER'
,'LAZY WRITER'
,'CHECKPOINT SLEEP'
,'RA MANAGER')
order by batch_duration desc
Si vous devez voir le SQL s'exécuter pour un spid donné à partir des résultats, utilisez quelque chose comme ceci:
declare
@spid int
, @stmt_start int
, @stmt_end int
, @sql_handle binary(20)
set @spid = XXX -- Fill this in
select top 1
@sql_handle = sql_handle
, @stmt_start = case stmt_start when 0 then 0 else stmt_start / 2 end
, @stmt_end = case stmt_end when -1 then -1 else stmt_end / 2 end
from sys.sysprocesses
where spid = @spid
order by ecid
SELECT
SUBSTRING( text,
COALESCE(NULLIF(@stmt_start, 0), 1),
CASE @stmt_end
WHEN -1
THEN DATALENGTH(text)
ELSE
(@stmt_end - @stmt_start)
END
)
FROM ::fn_get_sql(@sql_handle)
ms
quantification pars
. Un débordement possible peut se produire (arrivé pour moi).Si vous exécutez SQL Server 2005 ou 2008, vous pouvez utiliser les DMV pour trouver ceci ...
la source
Vous pouvez exécuter la commande sp_who pour obtenir une liste de tous les utilisateurs, sessions et processus actuels. Vous pouvez ensuite exécuter la commande KILL sur n'importe quel spid qui en bloque d'autres.
la source
Je suggérerais d'interroger les
sys
vues. quelque chose de similaire àDe cette façon, vous pouvez obtenir un fichier
TotalPagesAllocated
qui peut vous aider à déterminer celuispid
qui prend toutes les ressources du serveur. Il y a de nombreuses fois où je ne peux même pas afficher le moniteur d'activité et utiliser cessys
vues pour voir ce qui se passe.Je vous recommande de lire l'article suivant. J'ai obtenu cette référence d'ici .
la source
Il existe différentes vues de gestion intégrées au produit. Sur SQL 2000, vous utiliseriez des processus système . Sur SQL 2K5, il existe plus de vues comme sys.dm_exec_connections , sys.dm_exec_sessions et sys.dm_exec_requests .
Il existe également des procédures telles que sp_who qui exploitent ces vues. Dans 2K5 Management Studio, vous bénéficiez également du moniteur d'activité.
Et enfin et surtout, il existe des scripts contribués par la communauté comme Who Is Active d'Adam Machanic .
la source
En fait, l'exécution
EXEC sp_who2
dans Query Analyzer / Management Studio donne plus d'informations quesp_who
.Au-delà, vous pouvez configurer SQL Profiler pour surveiller tout le trafic entrant et sortant vers le serveur. Le profileur vous permet également d'affiner exactement ce que vous recherchez.
Pour SQL Server 2008:
Gardez à l'esprit que le profileur est vraiment une application de journalisation et d'observation. Il continuera à se connecter et à regarder tant qu'il est en cours d'exécution. Il pourrait remplir des fichiers texte ou des bases de données ou des disques durs, alors faites attention à ce que vous avez à regarder et pendant combien de temps.
la source
la source
Remarque: le moniteur d'activité SQL Server pour SQL Server 2008 peut être trouvé en cliquant avec le bouton droit sur votre serveur actuel et en accédant à "Moniteur d'activité" dans le menu contextuel. J'ai trouvé que c'était le moyen le plus simple de tuer les processus si vous utilisez SQL Server Management Studio.
la source
Dans l'Explorateur d'objets, accédez à: Serveur -> Gestion -> Moniteur d'activité. Cela vous permettra de voir toutes les connexions sur le serveur actuel.
la source
voici une requête qui montrera toutes les requêtes bloquantes. Je ne suis pas tout à fait sûr s'il affichera simplement des requêtes lentes:
la source
Le bon script serait comme ceci:
la source
Vous pouvez utiliser la requête ci-dessous pour trouver la dernière demande en cours:
En utilisant le script ci-dessous, vous pouvez également trouver le nombre de connexions par base de données:
Pour plus de détails, veuillez visiter: http://www.dbrnd.com/2015/06/script-to-find-running-process-session-logged-user-in-sql-server/
la source
en 2005, vous pouvez cliquer avec le bouton droit sur une base de données, accéder aux rapports et il y a toute une liste de rapports sur les transitions et les verrous, etc.
la source
Essayez avec ceci:
Il vous fournira toutes les requêtes des utilisateurs. Jusqu'à spid 50, tout est constitué de sessions de processus internes au serveur SQL. Mais, si vous le souhaitez, vous pouvez supprimer la clause where:
la source
Et
la source
Utilisez Sql Server Profiler (menu Outils) pour surveiller l'exécution des requêtes et utilisez le moniteur d'activité dans Management Studio pour voir comment est connecté et si leur connexion bloque d'autres connexions.
la source
Vous devriez essayer une procédure très utile
sp_whoIsActive
qui peut être trouvée ici: http://whoisactive.com et elle est gratuite.la source