Sous SQL Server, existe-t-il un moyen simple de filtrer la sortie de sp_who2? Disons que je voulais simplement afficher les lignes d'une certaine base de données, par exemple.
sql-server
sql-server-2016
Craig Schwarze
la source
la source
Réponses:
Vous pouvez essayer quelque chose comme
Et filtrez ce dont vous avez besoin.
la source
Vous pouvez enregistrer les résultats dans une table temporaire , mais il serait encore mieux d'aller directement à la source sur
master.dbo.sysprocesses
.Voici une requête qui retournera presque exactement le même résultat que
sp_who2
:Vous pouvez maintenant facilement ajouter les clauses
ORDER BY
ou queWHERE
vous souhaitez pour obtenir un résultat significatif.Vous pouvez également envisager d'utiliser Activity Monitor dans SSMS ( Ctrl+ Alt+ A).
la source
Une façon consiste à créer une table temporaire:
la source
basé sur http://web.archive.org/web/20080218124946/http://sqlserver2005.databases.aspfaq.com/how-do-i-mimic-sp-who2.html
j'ai créé le script suivant,
qui résout la recherche connexions actives à n'importe quelle base de données utilisant DMV cela fonctionne sous sql 2005, 2008 et 2008R2
Le script suivant utilise sys.dm_exec_sessions , sys.dm_exec_requests , sys.dm_exec_connections , sys.dm_tran_locks
la source
Légère amélioration de la réponse d' Astander . J'aime mettre mes critères en tête et faciliter la réutilisation au jour le jour:
la source
Il y a pas mal de bonnes procédures stockées utilisateur sp_who3 - je suis sûr qu'Adam Machanic en a fait une très bonne, AFAIK.
Adam l'appelle qui est actif: http://whoisactive.com
la source
Semblable à la réponse de KyleMit , il est possible de sélectionner directement les tables utilisées par SP_WHO2, bien que je pense qu'il ne faut que la table dbo.sysprocesses.
Si quelqu'un ouvre ce SP, il peut comprendre ce qu'il fait. C'est mon meilleur choix pour avoir une sortie similaire à SP_WHO2
Sur cette sélection, vous pouvez sélectionner les champs dont vous avez besoin et obtenir l'ordre que vous souhaitez.
la source
Un moyen très simple de le faire est de créer un lien ODBC dans EXCEL et d'exécuter SP_WHO2 à partir de là.
Vous pouvez actualiser quand vous le souhaitez et parce que c'est EXCEL, tout peut être manipulé facilement!
la source
Oui, en capturant la sortie de sp_who2 dans une table puis en sélectionnant dans la table, mais ce serait une mauvaise façon de le faire. Premièrement, parce que sp_who2, malgré sa popularité, est une procédure non documentée et vous ne devriez pas vous fier à des procédures non documentées. Deuxièmement, parce que tout ce que sp_who2 peut faire, et bien plus encore, peut être obtenu à partir de sys.dm_exec_requests et d'autres DMV, et que le spectacle peut être filtré, ordonné, joint et tous les autres bonus fournis avec les ensembles de lignes interrogeables.
la source
Extension de la première et meilleure réponse ... J'ai créé une procédure stockée sur la base de données master à laquelle vous pouvez ensuite passer des paramètres .. comme le nom de la base de données:
Je pourrais l'étendre pour ajouter un ordre par paramètre ou même un paramètre kill afin qu'il tue toutes les connexions à une donnée particulière
la source
J'écris ici pour mon usage futur. Il utilise sp_who2 et s'insère dans la variable de table au lieu de la table temporaire car la table Temp ne peut pas être utilisée deux fois si vous ne la supprimez pas. Et montre bloqué et bloqueur sur la même ligne.
la source
Voici la solution pour vous: http://blogs.technet.com/b/wardpond/archive/2005/08/01/the-openrowset-trick-accessing-stored-procedure-output-in-a-select-statement .aspx
la source