Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2018.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

SQL Server: Zugriffe untersuchen mit XEvents

Wenn es darum ging, die Zugriffe auf eine SQL Server-Datenbank zu tracken – sei es zur Performance-Messung oder zur Optimierung einer Datenbank – war bis vor kurzem der SQL Server Profiler die Anwendung der Wahl. Mittlerweile gibt es allerdings einen in das SQL Server Management Studio integrierten Objekttyp namens »Erweiterte Ereignisse«. In diesem Beitrag wollen wir Ihnen diesen Objekttyp vorstellen. Das einfache Beispiel zu diesem Zweck stammt aus einem anderen Beitrag namens »SQL Server-Zugriff ohne gespeichertes Kennwort«. Hier wollen wir herausfinden, unter welchem Benutzer ein Zugriff auf eine SQL Server-Datenbank von Access aus erfolgt, bei dem offensichtlich gar kein Benutzer angemeldet ist.

Die Erweiterten Ereignisse, die wir in der deutschen Version des SQL Server Management Studio finden, heißen im Englischen Extended Events oder – etwas stylischer – XEvents. Wir wollen daher in diesem Beitrag auch diese Bezeichnung wählen.

Die XEvents sind Ereignisse, die durch verschiedene Aktionen des SQL Servers ausgelöst werden und in die Sie eingreifen können, indem Sie verschiedene Informationen, die bei diesen Ereignissen anfallen, ausgeben oder speichern lassen.

Bis vor einigen SQL Server-Versionen war der SQL Server Profiler das Mittel der Wahl, wenn es um die Aufzeichnung und die Analyse von Ereignissen im SQL Server ging. Mit dem SQL Server 2008 wurden jedoch die XEvents eingeführt, die zunächst nur per T-SQL definiert werden konnten (ein Vorteil gegenüber den Ereignissen im Profiler), mittlerweile aber auch über die Benutzeroberfläche des SQL Server Management Studios angelegt werden können.

Access und XEvents

Für uns als Access-Entwickler werden die XEvents interessant, wenn wir eine Kombination aus Access-Frontend und SQL Server-Backend verwenden und hier den Datenverkehr zwischen dem Frontend und dem Backend analysieren wollen – sei es, um die Performance zu optimieren, die Menge der übertragenen Daten zu prüfen oder auch um andere Dinge herauszufinden – wie eben um das Problem zu lösen, dass uns im Beitrag SQL Server-Zugriff ohne gespeichertes Kennwort über den Weg gelaufen ist. Dort haben wir gerätselt, wie es sein kann, dass man mit einer Access-Anwendung auf die Tabellen einer SQL Server-Datenbank zugreifen kann, obwohl sich der geplante Benutzer überhaupt nicht angemeldet hat.

Was erfassen die XEvents?

Wenn wir hier alle Daten beschreiben wollten, die XEvents erfassen können, würde das den Rahmen sprengen. Uns interessieren aber auch nur diejenigen Ereignisse, die beim Zugriff unserer Access-Anwendung auf das SQL Server-Backend ausgelöst werden.

Um das auf zunächst in Objektform zu fassen: Wir können Zugriffe auf die per ODBC verknüpften Tabellen erfassen, Zugriffe über Aktionsabfragen und Aufrufe von SQL Server-Objekten wie gespeicherte Prozeduren, Funktionen und Trigger.

Wo erfassen die XEvents die Ereignisse?

Die mit XEvents erfassten Ereignisse können Sie beispielsweise in einer Datei speichern. Für unsere Zwecke gestaltete es sich allerdings als praktisch, die mit den Ereignissen erfassten Daten direkt im SQL Server Management Studio auszugeben.

XEvents im SQL Server Management Studio

In Visual Studio finden Sie die XEvents im Objekt-Explorer unter dem Eintrag Verwaltung|Erweiterte Ereignisse des Datenbankservers (siehe Bild 1).

Die XEvents im Objekt-Explorer

Bild 1: Die XEvents im Objekt-Explorer

Darunter befindet sich ein Eintrag namens Sitzungen. Hier finden Sie bereits zwei Einträge: AlwaysOn_health und system_health. AlwaysOn_health wird in Zusammenhang mit der Ausfallsicherheit des SQL Servers verwendet.

Interessant ist letzterer Eintrag: system_health speichert alle möglichen Informationen über den Betrieb des SQL Servers.

Diese können beispielsweise von Microsoft beim Auftreten von Problemen zur Analyse herangezogen werden.

Eine Sitzung ist, wenn Sie zuvor bereits mit dem SQL Server Profiler gearbeitet haben, mit einer Ablaufverfolgung zu vergleichen.

Was wir untersuchen wollen

Wie weiter oben erwähnt, gab es bei einer Frontend-Datenbank das Problem, dass man sich vermeintlich ohne vorherige Anmeldung an eine Datenbank im SQL Server anmelden konnte. Wir wollen uns ansehen, welche Informationen beim Zugriff auf die SQL Server-Datenbank ausgetauscht werden, um herauszufinden, wo der Denkfehler liegt.

Neue XEvents-Sitzung anlegen

Damit Sie besser verstehen, wie eine XEvents-Sitzung funktioniert, legen wir am besten einfach einmal eine an. Dazu klicken Sie mit der rechten Maustaste auf das Element Sitzungen im Objekt-Explorer und wählen aus dem Kontextmenü den Eintrag Neue Sitzung... aus. Es erscheint der Dialog Neue Sitzung. Hier gibt es, wie bei den meisten Dialogen zum Anlegen oder Bearbeiten von SQL Server-Elementen, links die Seitenauswahl und rechts die Inhalte der jeweiligen Seite.

Auf der ersten Seite namens Allgemein geben wir den Namen der Sitzung an, hier Untersuchung Authentifizierung. Das Feld Vorlage lassen wir auf stehen. Außerdem wollen wir gleich loslegen, wenn wir die Sitzung angelegt haben, und stellen daher die Eigenschaft Ereignissitzung direkt nach dem Erstellen der Sitzung starten ein. Außerdem wollen wir Livedaten während der Aufzeichnung auf dem Bildschirm ansehen aktivieren (siehe Bild 2). Wir zeigen Ihnen später, wie Sie diese Aktionen später manuell starten.

Anlegen einer neuen XEvents-Sitzung

Bild 2: Anlegen einer neuen XEvents-Sitzung

Ereignisse definieren

Damit wechseln wir auf die zweite Seite namens Ereignisse. Auf dieser Seite finden Sie links ein Listenfeld mit allen verfügbaren Ereignissen – sehr vielen Ereignissen. Wir benötigen nur sehr wenige davon. Damit wir diese finden, geben wir einen Teil des Namens in das Feld mit dem Inhalt Ereignisse suchen ein, zum Beispiel completed. Damit werden nur noch die in Bild 3 sichtbaren Ereignisse angezeigt. Klicken wir auf eines der Ereignisse, zeigt das Feld links unter der Liste die Beschreibung des Ereignisses an. Die Liste rechts unter der Liste liefert alle Ereignisfelder, also die Eigenschaften, die beim Eintreten des Ereignisses ausgegeben werden können.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

© 2003-2018 André Minhorst Alle Rechte vorbehalten.