Was ist "Audit Logout" in SQL Server Profiler?

91

Ich führe einen Datenimport durch (mit C # / Linq) und versuche natürlich, meine Abfragen so weit wie möglich zu optimieren. Zu diesem Zweck führe ich mit SQL Server Profiler einen Trace in der Datenbank aus, wobei mein Trace nach meinem SQL-Anmeldenamen gefiltert wird (ein Name, der eindeutig meinem Datenimportprozess zugeordnet werden kann).

Seltsamerweise sind die meisten meiner SQL-Anweisungen sehr schnell :) - nur sehr wenige Abfragen überschreiten sogar die 1-ms-Marke. Zwischen all meinen Abfragen befinden sich jedoch mehrere Zeilen, in denen die EventClass "Audit Login" oder "Audit Logout" lautet - und die Dauer eines "Audit Logout" kann bis zu einer Minute betragen!

Hat dies etwas damit zu tun, dass ich Transaktionen in meinem Import verwende? Wenn ja, gibt es eine Möglichkeit, die wichtigsten Fragen zu finden, damit ich sie bereinigen kann?

Shaul Behr
quelle

Antworten:

81

Wenn ich mich richtig erinnere, ist die Dauer einer Überwachungsabmeldung die Zeit, die die Verbindung geöffnet war. ZB nichts mit der Geschwindigkeit des Befehls zu tun - nur mit der Zeit, in der der Login 'angemeldet' war.

Thies
quelle
9
Interessant, danke! Aber warum ist dann die Anzahl der Lesevorgänge so hoch (~ 400.000), wenn die Anzahl der Lesevorgänge für die Abfragen zwischen "Anmelden" und "Abmelden" nur 56 beträgt?
Shaul Behr
Dies ist die Anzahl der ms von der Anmeldung bis zur Abmeldung. Nicht die tatsächliche Häufigkeit, mit der die Abfragen innerhalb der Verbindung verwendet wurden. 400 000 ms sind ungefähr 7 Minuten. Sehen Sie sich die CPU an, lesen und schreiben Sie Spalten, um Abfragen zu finden, bei denen die CPU- und / oder Festplattenauslastung hoch ist - beides beeinträchtigt die Leistung.
Thies
Es tut mir leid, meinst du das ReadsAntworten auf Zeitmessung?
Johnny_D
1
Der Wert für "Ablesen" beim Abmelden scheint bei mir sehr hoch zu sein, wenn man bedenkt, dass nur ein Vorgang mit 3 Lesevorgängen zwischen ihm und dem Anmelden aufgeführt ist.
Triynko
1
Es ist zu beachten, dass die ReadsSpalte keine von Abfragen zurückgegebenen Zeilen darstellt, sondern die Anzahl der Lesevorgänge auf der logischen Festplatte. Eine Abfrage, die nicht einmal etwas zurückgibt, durchsucht möglicherweise eine ganze Tabelle mit 1 Million Datensätzen nach dem Nichts, das zurückgegeben werden soll, was zu einer sehr großen Anzahl von Lesevorgängen führen würde. Die Anzahl der Lesevorgänge hängt also nicht wirklich mit der Anzahl der Abfragen zusammen.
Pace
12

Anmelde- / Abmeldeereignisse beziehen sich auf das Einrichten / Herunterfahren. IIRC ist die Zeit, für die "für die Zeit angemeldet" war, im Gegensatz zu einer Verarbeitungsdauer wie bei anderen Protokollereignissen.

Im Allgemeinen werden diese Ereignisse ausgeblendet, es sei denn, Sie vermuten, dass ein Problem mit der Verwaltung des Verbindungspools usw. vorliegt.

Die Rohzeiten für die Chargen sollten ausreichen, um die Zeit zu diagnostizieren, die die tatsächliche Aktivität benötigt, einschließlich der Auswirkungen von Transaktionen usw.

Ruben Bartelink
quelle
Ist es möglich, dieses "Auf- / Abbauen" genauer zu untersuchen? Bitte sehen Sie folgende verwandte Frage: stackoverflow.com/questions/44920375/…
Stefan
3

Die Ereignisklasse "Audit Logout" gibt an, dass sich ein Benutzer von Microsoft SQL Server abgemeldet (abgemeldet) hat. Ereignisse in dieser Klasse werden durch neue Verbindungen oder durch Verbindungen ausgelöst, die aus einem Verbindungspool wiederverwendet werden.

Dies ist die Gesamtzeit, für die die Verbindung angemeldet war, einschließlich der Leerlaufzeit. Dies weist also nicht auf ein Leistungsproblem hin. Es ist sehr unwahrscheinlich, dass das Profilieren von Anmeldungen / Abmeldungen zu Leistungsproblemen führt. Sie sollten besser nach Abfragen mit schlechter Leistung suchen, möglicherweise nach Abfragen mit langer Laufzeit.

Für weitere Informationen schlage ich https://msdn.microsoft.com/en-us/library/ms175827.aspx vor :)

Michele Caggiano
quelle
1
Sind Sie sicher, dass Audit Logout-Ereignisse ausgelöst werden, wenn Verbindungen aus einem Verbindungspool wiederverwendet werden? Ich dachte, Verbindungspools seien ein Beispiel für einen Grund, warum möglicherweise hohe Audit-Abmeldedauern auftreten, da die Verbindung offen ist, aber die meiste Zeit ihres Lebens
Adam Goodwin,
2

Erwähnenswert ist auch, dass in dieser Antwort Audit Login / Logout möglicherweise nur bedeutet, dass die Verbindung vom Verbindungspool wiederverwendet / an diesen zurückgegeben wird.

Rory
quelle