Gibt es unter SQL Server eine einfache Möglichkeit, die Ausgabe von sp_who2 zu filtern? Angenommen, ich wollte zum Beispiel nur Zeilen für eine bestimmte Datenbank anzeigen.
sql-server
sql-server-2016
Craig Schwarze
quelle
quelle
Antworten:
Sie könnten so etwas versuchen
Und filtern Sie nach Ihren Wünschen.
quelle
Sie könnten die Ergebnisse in einer temporären Tabelle speichern , aber es wäre noch besser, direkt zur Quelle zu wechseln
master.dbo.sysprocesses
.Hier ist eine Abfrage, die fast genau das gleiche Ergebnis liefert wie
sp_who2
:Jetzt können Sie ganz einfach eine
ORDER BY
oderWHERE
mehrere Klauseln hinzufügen , um eine aussagekräftige Ausgabe zu erhalten.Alternativ können Sie Activity Monitor auch in SSMS ( Ctrl+ Alt+ A) verwenden
quelle
Eine Möglichkeit besteht darin, eine temporäre Tabelle zu erstellen:
quelle
basierend auf http://web.archive.org/web/20080218124946/http://sqlserver2005.databases.aspfaq.com/how-do-i-mimic-sp-who2.html habe
ich folgendes Skript erstellt,
das das Finden behebt Aktive Verbindungen zu jeder Datenbank mit DMV Dies funktioniert unter SQL 2005, 2008 und 2008R2
Das folgende Skript verwendet sys.dm_exec_sessions , sys.dm_exec_requests , sys.dm_exec_connections und sys.dm_tran_locks
quelle
Leichte Verbesserung von Astanders Antwort . Ich mag es, meine Kriterien an die Spitze zu setzen und die tägliche Wiederverwendung zu vereinfachen:
quelle
Es gibt einige gute gespeicherte sp_who3-Benutzerprozeduren - ich bin sicher, Adam Machanic hat eine wirklich gute gemacht, AFAIK.
Adam nennt es Wer ist aktiv: http://whoisactive.com
quelle
Ähnlich wie bei KyleMit ist es möglich, die von SP_WHO2 verwendeten Tabellen direkt auszuwählen, obwohl ich denke, dass nur die Tabelle dbo.sysprocesses benötigt wird.
Wenn jemand diesen SP öffnet, kann er verstehen, was er tut. Dies ist meine beste Auswahl, um eine ähnliche Ausgabe wie SP_WHO2 zu haben
Über diese Auswahl können Sie die Felder auswählen, die Sie benötigen, und die gewünschte Reihenfolge festlegen.
quelle
Eine wirklich einfache Möglichkeit besteht darin, einen ODBC-Link in EXCEL zu erstellen und SP_WHO2 von dort aus auszuführen.
Sie können jederzeit aktualisieren und da es EXCEL ist, kann alles einfach manipuliert werden!
quelle
Ja, indem Sie die Ausgabe von sp_who2 in einer Tabelle erfassen und dann aus der Tabelle auswählen, aber das wäre eine schlechte Methode. Erstens, weil sp_who2 trotz seiner Beliebtheit eine undokumentierte Prozedur ist und Sie sich nicht auf undokumentierte Prozeduren verlassen sollten. Zweitens, weil alle sp_who2-Funktionen und vieles mehr von sys.dm_exec_requests und anderen DMVs abgerufen werden können und show gefiltert, geordnet, verknüpft und alle anderen Goodies mit abfragbaren Rowsets geliefert werden können.
quelle
Erweiterung der ersten und besten Antwort ... Ich habe eine gespeicherte Prozedur in der Master-Datenbank erstellt, an die Sie dann Parameter übergeben können, z. B. den Namen der Datenbank:
Ich könnte es erweitern, um eine Reihenfolge nach Parametern oder sogar nach einem Kill-Parameter hinzuzufügen, damit alle Verbindungen zu bestimmten Daten unterbrochen werden
quelle
Dies ist die Lösung für Sie: http://blogs.technet.com/b/wardpond/archive/2005/08/01/the-openrowset-trick-accessing-stored-procedure-output-in-a-select-statement .aspx
quelle