Ein guter SQL-Sniffer

7

Kann mich jemand auf einen guten SQL-Sniffer verweisen, mit dem ich die SQL-Befehle, die für meine Datenbank ausgeführt werden, in Echtzeit verfolgen kann?

Wenn es kostenlos ist, wäre das großartig.

Guillelon
quelle

Antworten:

24

Verwenden Sie eine SQL-Ablaufverfolgung. Wenn Sie nach einer entsprechenden Benutzeroberfläche suchen, können Sie SQL Profiler verwenden . Es wird mit allen Versionen von SQL Server mit Ausnahme von SQL Server Express ausgeliefert. SQL Trace wird direkt über T-SQL verwendet und ist sogar mit SQL Server Express verfügbar, obwohl gute Kenntnisse in SQL Trace wünschenswert sind, da die Einrichtung ohne die GUI etwas entmutigend sein kann.

Sie würden lediglich die Ereignisse auswählen, die sich auf die Ausführung von SQL-Anweisungen / Batches / gespeicherten Prozeduren beziehen. Sie können die tatsächlichen Textanweisungen erfassen.

Wenn Sie nicht mit der Auswahl aus den verfügbaren (und vielen ) Ereignissen ringen möchten , können Sie eine integrierte Vorlage verwenden. Es hört sich so an, als ob Sie wahrscheinlich die T-SQL- Vorlage verwenden möchten , aber schauen Sie sie sich an, bevor Sie den Trace blind ausführen.

BOL-Referenz zu SQL Profiler

Am Ende dieser verknüpften Referenz finden Sie eine Handvoll "Aufgaben" (Tutorials), mit denen Sie in die richtige Richtung starten können.

EDIT : Aaron bringt einen guten Punkt vor (siehe Kommentare). Die Verwendung von SQL Server Profiler wird normalerweise für einen kurzen Einblick oder eine relativ kurze Ablaufverfolgung verwendet, um eine schnelle Fehlerbehebung durchzuführen. Es gibt definitiv Auswirkungen auf die Leistung, und ich habe vielbeschäftigte Server gesehen, die dadurch in die Knie gezwungen wurden. Wenn Sie nach einem längeren Trace mit weniger Auswirkungen auf die Leistung suchen, würde ich T-SQL verwenden, um die serverseitigen Traces zu generieren. Eine weitere großartige Alternative sind Extended Events .

BOL-Referenz zu erweiterten Ereignissen

Thomas Stringer
quelle
4
+1, aber ich würde auch erwähnen, dass das Skripten eines serverseitigen Trace und das Senden der Ausgabe an eine Datei (oder eine Tabelle, wenn Sie müssen) und das Überprüfen der Ereignisse nachträglich eine viel geringere Auswirkung auf eine Produktion haben wird Server als Profiler öffnen und versuchen, die Aktivität in Echtzeit zu beobachten. Sobald Sie anfangen, diese Ausgabe in die Mickey-Mouse-Benutzeroberfläche von Profiler zu pumpen, fragen Sie nach Problemen. Ich weiß, es ist das, was Sie oben gemeint haben. Ich wollte nur genauer sagen, warum die Benutzeroberfläche "weniger gut" ist.
Aaron Bertrand
1
@AaronBertrand Großartiger Punkt, und ich habe meinen Beitrag bearbeitet, um dies ausdrücklich anzugeben. Profiler kann einen schlechten Tag noch schlimmer machen ... sehr schnell. :)
Thomas Stringer
Dies hängt von dem Intervall ab, das für die Aktualisierung festgelegt wurde, wenn verwendet wird, um jede ausgeführte SQL-Anweisung anzuzeigen. Ich glaube, wenn Sie auf 10 Sekunden oder weniger eingestellt sind, werden Sie die Leistung beeinträchtigen. Andernfalls hat der SQL-Profiler Ablaufverfolgungsvorlagen integriert und wird zum Auffinden von Leistungsproblemen verwendet. Die Benutzeroberfläche macht es nicht zu einem Leistungsproblem. Auch beim Ausführen eines Powershell-Skripts kann dasselbe Problem auftreten. Gültiger Punkt, auf den Sie achten sollten.
SoftwareCarpenter
10

Verwenden Sie "SQL Profiler". Es wird kostenlos mit SQL Server 2008 geliefert.

Simon Hughes
quelle