2016-08-10 3 views
2

Hintergrund:Verfolgen von langsamen Benutzeranmeldungssitzungen in SQL Server

Wir haben eine Anzahl von Datenbanken der ähnlichen Größe und identischen Schemas. Alle von ihnen haben identische Einstellungen und sind auf der gleichen Instanz platziert. Jeder verwendet eine Anwendung, um auf Datenbanken zuzugreifen und sie abzufragen. Innerhalb der Anwendung sind alle Verbindungszeichenfolgen (außer Login und Passwort) für alle Datenbanken identisch. Viele Benutzer erfahren eine erhebliche Langsamkeit beim Anmelden und Abfragen einer unserer Datenbanken, jedoch nicht bei den anderen.

Problem:

Eine der Datenbanken allmählich langsamer und langsamer zu erreichen. Die Ausführungszeit der Abfrage ist ebenfalls betroffen, jedoch nicht so signifikant wie die Zeit, die der Benutzer benötigt, um sich anzumelden. Jetzt dauert es etwa 50 Sekunden, um sich anzumelden. Für alle anderen Datenbanken beträgt die Anmeldezeit nur 4-5 Sekunden.

Frage:

Ich mag normale Login-Sitzungen auf „gesunden Datenbanken“, um die Log-in-Session auf der problematischen Datenbank vergleichen. Könnten Sie bitte einen Weg vorschlagen, um zu überwachen, was genau in der Anmeldesitzung passiert? Ich weiß, wie Abfragen, die für eine bestimmte Datenbank ausgeführt werden, nachverfolgt werden können, aber ich weiß nicht, wonach ich suchen muss, um herauszufinden, was das Anmelden langsam macht. Würden entweder Profiler oder erweiterte Ereignisse solche Informationen anzeigen? Gibt es eine andere Möglichkeit, zu analysieren, was passiert, wenn der Benutzer sich anmeldet?

Antwort

1

Sie können die SQL Server Profiler verwenden, jede Abfrage zu verfolgen, um die DDBB geschickt und mit der Fähigkeit zu filtern auf den Benutzernamen, Datenbankname, usw.

Siehe https://msdn.microsoft.com/en-us/en-en/library/ms175047.aspx

Ich würde ein Schauen Sie sich dbbb-Indizes und Statistiken an, da dies die Bereiche sind, die Ihre ddbb verlangsamen könnten, wenn sie nicht gut gepflegt werden.

+0

Danke Oscar. Zeigt es die Ausführungszeit für jede Abfrage, die über die Anwendung ausgeführt wird? – QWE

+0

@QWE Ja, sowohl Startzeit als auch Endzeit – Oscar

+2

Kann ich @Oscar empfehlen, einige _events_ und _columns_ nach Namen in Ihrer Antwort zu identifizieren, die für die Nachverfolgung nützlich wären? Zum Beispiel "SQL: BatchCompleted" - und "SQL: StmtCompleted" -Ereignisse mit den Spalten "Duration", "StartTime" und "EndTime". –

Verwandte Themen