{"id":55001158,"date":"2018-10-01T00:00:00","date_gmt":"2020-05-13T21:12:37","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1158"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"SQL_Server_Zugriffe_untersuchen_mit_XEvents","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/","title":{"rendered":"SQL Server: Zugriffe untersuchen mit XEvents"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg06.met.vgwort.de\/na\/c99bf64f70af4f298b1e9c3023535c84\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Wenn es darum ging, die Zugriffe auf eine SQL Server-Datenbank zu tracken &#8211; sei es zur Performance-Messung oder zur Optimierung einer Datenbank &#8211; 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 &#8222;Erweiterte Ereignisse&#8220;. In diesem Beitrag wollen wir Ihnen diesen Objekttyp vorstellen. Das einfache Beispiel zu diesem Zweck stammt aus einem anderen Beitrag namens &#8222;SQL Server-Zugriff ohne gespeichertes Kennwort&#8220;. 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.<\/b><\/p>\n<p>Die <b>Erweiterten Ereignisse<\/b>, die wir in der deutschen Version des SQL Server Management Studio finden, <b>h<\/b>ei&szlig;en im Englischen <b>Extended Events <\/b>oder &#8211; etwas stylischer &#8211; <b>XEvents<\/b>. Wir wollen daher in diesem Beitrag auch diese Bezeichnung w&auml;hlen.<\/p>\n<p>Die XEvents sind Ereignisse, die durch verschiedene Aktionen des SQL Servers ausgel&ouml;st werden und in die Sie eingreifen k&ouml;nnen, indem Sie verschiedene Informationen, die bei diesen Ereignissen anfallen, ausgeben oder speichern lassen.<\/p>\n<p>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&uuml;hrt, die zun&auml;chst nur per T-SQL definiert werden konnten (ein Vorteil gegen&uuml;ber den Ereignissen im Profiler), mittlerweile aber auch &uuml;ber die Benutzeroberfl&auml;che des SQL Server Management Studios angelegt werden k&ouml;nnen.<\/p>\n<h2>Access und XEvents<\/h2>\n<p>F&uuml;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 &#8211; sei es, um die Performance zu optimieren, die Menge der &uuml;bertragenen Daten zu pr&uuml;fen oder auch um andere Dinge herauszufinden &#8211; wie eben um das Problem zu l&ouml;sen, dass uns im Beitrag <b>SQL Server-Zugriff ohne gespeichertes Kennwort <\/b>&uuml;ber den Weg gelaufen ist. Dort haben wir ger&auml;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 &uuml;berhaupt nicht angemeldet hat.<\/p>\n<h2>Was erfassen die XEvents<\/h2>\n<p>Wenn wir hier alle Daten beschreiben wollten, die XEvents erfassen k&ouml;nnen, w&uuml;rde das den Rahmen sprengen. Uns interessieren aber auch nur diejenigen Ereignisse, die beim Zugriff unserer Access-Anwendung auf das SQL Server-Backend ausgel&ouml;st werden.<\/p>\n<p>Um das auf zun&auml;chst in Objektform zu fassen: Wir k&ouml;nnen Zugriffe auf die per ODBC verkn&uuml;pften Tabellen erfassen, Zugriffe &uuml;ber Aktionsabfragen und Aufrufe von SQL Server-Objekten wie gespeicherte Prozeduren, Funktionen und Trigger.<\/p>\n<h2>Wo erfassen die XEvents die Ereignisse<\/h2>\n<p>Die mit XEvents erfassten Ereignisse k&ouml;nnen Sie beispielsweise in einer Datei speichern. F&uuml;r unsere Zwecke gestaltete es sich allerdings als praktisch, die mit den Ereignissen erfassten Daten direkt im SQL Server Management Studio auszugeben.<\/p>\n<h2>XEvents im SQL Server Management Studio<\/h2>\n<p>In Visual Studio finden Sie die XEvents im Objekt-Explorer unter dem Eintrag <b>Verwaltung|Erweiterte Ereignisse <\/b>des Datenbankservers (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_1158_001.png\" alt=\"Die XEvents im Objekt-Explorer\" width=\"499,6607\" height=\"350,0741\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Die XEvents im Objekt-Explorer<\/span><\/b><\/p>\n<p>Darunter befindet sich ein Eintrag namens <b>Sitzungen<\/b>. Hier finden Sie bereits zwei Eintr&auml;ge: <b>AlwaysOn_health <\/b>und <b>system_health<\/b>. <b>AlwaysOn_health <\/b>wird in Zusammenhang mit der Ausfallsicherheit des SQL Servers verwendet.<\/p>\n<p> Interessant ist letzterer Eintrag: <b>system_health<\/b> speichert alle m&ouml;glichen Informationen &uuml;ber den Betrieb des SQL Servers. <\/p>\n<p>Diese k&ouml;nnen beispielsweise von Microsoft beim Auftreten von Problemen zur Analyse herangezogen werden.<\/p>\n<p>Eine Sitzung ist, wenn Sie zuvor bereits mit dem SQL Server Profiler gearbeitet haben, mit einer Ablaufverfolgung zu vergleichen.<\/p>\n<h2>Was wir untersuchen wollen<\/h2>\n<p>Wie weiter oben erw&auml;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.<\/p>\n<h2>Neue XEvents-Sitzung anlegen<\/h2>\n<p>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 <b>Sitzungen <\/b>im Objekt-Explorer und w&auml;hlen aus dem Kontextmen&uuml; den Eintrag <b>Neue Sitzung&#8230; <\/b>aus. Es erscheint der Dialog <b>Neue Sitzung<\/b>. 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.<\/p>\n<p>Auf der ersten Seite namens <b>Allgemein<\/b> geben wir den Namen der Sitzung an, hier <b>Untersuchung Authentifizierung<\/b>. Das Feld <b>Vorlage <\/b>lassen wir auf <b><Leer> <\/b>stehen. Au&szlig;erdem wollen wir gleich loslegen, wenn wir die Sitzung angelegt haben, und stellen daher die Eigenschaft <b>Ereignissitzung direkt nach dem Erstellen der Sitzung starten <\/b>ein. Au&szlig;erdem wollen wir <b>Livedaten w&auml;hrend der Aufzeichnung auf dem Bildschirm ansehen<\/b> aktivieren (siehe Bild 2). Wir zeigen Ihnen sp&auml;ter, wie Sie diese Aktionen sp&auml;ter manuell starten.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_1158_002.png\" alt=\"Anlegen einer neuen XEvents-Sitzung\" width=\"649,559\" height=\"526,8075\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Anlegen einer neuen XEvents-Sitzung<\/span><\/b><\/p>\n<h2>Ereignisse definieren<\/h2>\n<p>Damit wechseln wir auf die zweite Seite namens <b>Ereignisse<\/b>. Auf dieser Seite finden Sie links ein Listenfeld mit allen verf&uuml;gbaren Ereignissen &#8211; sehr vielen Ereignissen. Wir ben&ouml;tigen nur sehr wenige davon. Damit wir diese finden, geben wir einen Teil des Namens in das Feld mit dem Inhalt <b>Ereignisse suchen <\/b>ein, zum Beispiel <b>completed<\/b>. 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&ouml;nnen. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_1158_003.png\" alt=\"Suchen nach den ben&ouml;tigten Ereignissen\" width=\"700\" height=\"521,6309\" \/><\/p>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Suchen nach den ben&ouml;tigten Ereignissen<\/span><\/b><\/p>\n<p>Der erste Schritt ist nun, dass Sie die zu verfolgenden Ereignisse von der linken in die rechte Liste &uuml;bertragen, zum Beispiel per Doppelklick auf den jeweiligen Eintrag. In diesem Fall wollen wir so die beiden Ereignisse <b>rpc_completed <\/b>und <b>sql_statement_completed <\/b>in die rechte Liste kopieren.<\/p>\n<p>Danach suchen wir noch nach dem Ereignis, das beim Starten einer SQL-Anweisung ausgel&ouml;st wird, n&auml;mlich <b>sql_statement_starting<\/b>. Auch dieses f&uuml;gen wir per Doppelklick der Liste auf der rechten Seite hinzu.<\/p>\n<p>Nun wollen wir festlegen, welche Informationen wir beim Ausl&ouml;sen der Ereignisse erhalten m&ouml;chten und unter welchen Bedingungen die Ereignisse ausgel&ouml;st werden. Bedingungen Nun: Ein SQL Server mit mehreren Access-Frontends erh&auml;lt zur Laufzeit eine Menge Anfragen &#8211; Anfragen von verschiedenen Frontend-Rechnern und an verschiedene Backend-Datenbanken.<\/p>\n<p>Also macht es Sinn, nur eine gewisse Auswahl an Ereignissen etwa nur f&uuml;r eine spezielle Datenbank oder einen speziellen Nutzer. Sie k&ouml;nnten auch nur Ereignisse f&uuml;r eine bestimmte Tabelle tracken.<\/p>\n<p>Um diese Einstellungen vorzunehmen, wechseln wir mit der Schaltfl&auml;che <b>Konfigurieren <\/b>zum zweiten Teil der Seite <b>Ereignisse<\/b>. Hier finden wir in der linken Liste die im vorherigen Teil ausgew&auml;hlten Ereignisse. In der rechten Liste finden wir drei Bereiche:<\/p>\n<ul>\n<li><b>Globale Felder (Aktionen)<\/b>: Dies sind globale Eigenschaften, die f&uuml;r alle Ereignisse verf&uuml;gbar sind. Dazu geh&ouml;ren zum Beispiel der Datenbankname, in der das Ereignis ausgel&ouml;st wurde, der Name des aktuellen Benutzers von Windows und der angemeldete Benutzer der Datenbank oder der Text der &uuml;bermittelten SQL-Anweisung.<\/li>\n<li><b>Filter (Pr&auml;dikat)<\/b>: Mit diesen Filtern greifen Sie auf alle globalen Felder und Ereignisfelder zu und k&ouml;nnen Kriterien f&uuml;r diese festlegen, also zum Beispiel nur die Ereignisse einer Datenbank mit einem bestimmten Namen oder von einem bestimmten Benutzer tracken.<\/li>\n<li><b>Ereignisfelder<\/b>: Dies sind Eigenschaftsfelder, die mit dem speziellen Ereignis verkn&uuml;pft sind. Jedes Ereignis hat unterschiedliche Felder. F&uuml;r <b>sql_statement_completed<\/b> gibt es beispielsweise die verbrauchte Zeit f&uuml;r die ausgef&uuml;hrte Anweisung oder die Anzahl der betroffenen Datens&auml;tze.<\/li>\n<\/ul>\n<h2>Globale Felder definieren<\/h2>\n<p>Wir wollen globale Felder f&uuml;r alle drei Ereignisse ausgeben. Da wir ermitteln wollen, welcher Benutzer beim Ausl&ouml;sen des Zugriffs auf die Datenbank an diese angemeldet ist, wollen wir die globalen Felder <b>username<\/b>, <b>nt_username <\/b>und zus&auml;tzlich mit <b>sql_text <\/b>den Text der ausgef&uuml;hrten Anweisung ausgeben. Um diese f&uuml;r alle drei Ereignisse festzulegen, markieren wir die Ereignisse im Listenfeld links und setzen dann einen Haken bei den gew&uuml;nschten globalen Feldern. Dies sieht dann wie in Bild 4 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_1158_004.png\" alt=\"Festlegen der globalen Felder, die beim Ausl&ouml;sen der Ereignisse ausgegeben werden sollen\" width=\"700\" height=\"424,9449\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Festlegen der globalen Felder, die beim Ausl&ouml;sen der Ereignisse ausgegeben werden sollen<\/span><\/b><\/p>\n<h2>Filter setzen<\/h2>\n<p>Wir wollen nur die Ereignisse sehen, die f&uuml;r die Datenbank <b>Suedsturm_SQL <\/b>ausgel&ouml;st werden. Dazu aktivieren wir den Bereich <b>Filter (Pr&auml;dikat)<\/b>. Um den Filter hinzuzuf&uuml;gen, klicken Sie auf die erste leere Zeile in diesem Bereich. Dann w&auml;hlen Sie unter Feld eines der globalen Felder oder der Ereignisfelder aus, die per Kombinationsfeld zur Auswahl angeboten werden &#8211; in diesem Fall <b>sqlserver.database_name<\/b>. Die erste Zeile mit dem neuen Filter sieht anschlie&szlig;end wie in Bild 5 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_1158_005.png\" alt=\"Setzen eines Filters f&uuml;r die zu trackenden Ereignisse\" width=\"549,6265\" height=\"281,2471\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Setzen eines Filters f&uuml;r die zu trackenden Ereignisse<\/span><\/b><\/p>\n<h2>Ereignisfelder hinzuf&uuml;gen<\/h2>\n<p>Im Bereich <b>Ereignisfelder <\/b>finden wir erst einmal keine Eintr&auml;ge vor, wenn wir noch alle drei ausgew&auml;hlten Ereignisse markiert haben. Der Grund ist, dass es keine gemeinsamen Ereignisfelder f&uuml;r diese Kombination aus Ereignissen gibt. Erst, wenn wir nur eines der Ereignisse markieren, erscheinen hier einige Listeneintr&auml;ge (siehe Bild 6). F&uuml;r unser Beispiel brauchen wir keine der hier aufgef&uuml;hrten Eigenschaften zu tracken.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_1158_006.png\" alt=\"Setzen der auszugebenden Ereignisfelder\" width=\"549,6265\" height=\"188,3147\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Setzen der auszugebenden Ereignisfelder<\/span><\/b><\/p>\n<p>Damit k&ouml;nnen wir die Seite verlassen und zur Seite <b>Datenspeicher <\/b>wechseln. Hier k&ouml;nnen Sie festlegen, ob die getrackten Informationen in einer Datei gespeichert werden sollen oder an einer anderen Stelle. Wir haben weiter vorn schon angegeben, dass wir die Ereignisinformationen direkt live bei der Aufzeichnung sehen wollen, also m&uuml;ssen wir keine weiteren Angaben machen.<\/p>\n<h2>Fertigstellen und starten<\/h2>\n<p>Nun k&ouml;nnen wir den Dialog mit einem Klick auf <b>OK<\/b> schlie&szlig;en und daf&uuml;r sorgen, dass das Tracking der Ereignisse direkt gestartet wird. Nach dem Schlie&szlig;en des Dialogs wird im SQL Server Management Studio ein Fenster mit dem Titel <b>Live Data <\/b>eingeblendet.<\/p>\n<p>Wir starten nun unsere Access-Anwendung, die wir mit dem Backend verkn&uuml;pfen wollen und verwenden den Login-Dialog, um uns mit den Daten <b>Benutzer3\/password <\/b>anzumelden. Danach k&ouml;nnen wir gleich den Blick auf das SQL Server Management Studio richten, wo sich stramme 108 Ereignisse angesammelt haben (siehe Bild 7). Die obere Liste enth&auml;lt die einzelnen Ereignisse samt Bezeichnung und Zeitstempel der Ausf&uuml;hrung. Die untere Liste zeigt die Eigenschaften f&uuml;r das aktuell im oberen Bereich markierte Ereignis an.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_1158_007.png\" alt=\"Eigenschaften des ersten Ereignisses beim Anmelden an die Datenbank\" width=\"499,6607\" height=\"423,5845\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Eigenschaften des ersten Ereignisses beim Anmelden an die Datenbank<\/span><\/b><\/p>\n<p>Wir wollen diese nicht einzeln analysieren, sondern uns die relevanten Informationen anschauen. In diesem Fall die Eigenschaft <b>username<\/b>, die korrekt den Wert <b>Benutzer3 <\/b>enth&auml;lt &#8211; also den Benutzer, unter dem wir uns per SQL Server-Authentifizierung am SQL Server angemeldet haben.<\/p>\n<p>Und nun wird es interessant: Wir schlie&szlig;en die Access-Anwendung und &ouml;ffnen diese erneut. Auf diese Weise beenden wir die Access-Session und l&ouml;schen somit theoretisch auch die Anmeldung dieser Session am SQL Server. Im Beitrag <b>SQL Server-Zugriff ohne gespeichertes Kennwort <\/b>haben wir ja an dieser Stelle festgestellt, dass wir trotz fehlender Anmeldung auf die Daten der Tabelle zugreifen konnten. Nun wollen wir wissen, ob wir mit dem gleichen Benutzer angemeldet werden wir zuvor oder welcher Benutzer in diesem Fall verwendet wird.<\/p>\n<p>Dazu &ouml;ffnen wir nun eine Tabelle, beispielsweise <b>tblAnreden<\/b>. Leider bietet die Liste der Ereignisse keine M&ouml;glichkeit zum Leeren, daher m&uuml;ssen wir uns an der Uhrzeit orientieren, um die neu hinzugef&uuml;gten Ereignisse von denen der vorherigen Aktion unterscheiden zu k&ouml;nnen. Dennoch finden wir schnell eines der zuletzt ausgel&ouml;sten Ereignisse und die entsprechenden Eigenschaften. Und hier ist des R&auml;tsels L&ouml;sung: Der aktuelle Benutzer beim Zugriff auf die Datenbank ist der aktuell angemeldete Windows-Benutzer. Der SQL Server versucht also, wenn kein SQL Server-Konto beim Anmelden verwendet wird, das aktuelle Windows-Benutzerkonto zu nutzen. Das gelingt in diesem Fall, da wir die Datenbank ja mit dem aktuell angemeldeten Benutzer erstellt haben (siehe Bild 8).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_1158_008.png\" alt=\"Ermitteln des beim Ausl&ouml;sen des Ereignisses angemeldeten Benutzers\" width=\"424,7115\" height=\"430,0539\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Ermitteln des beim Ausl&ouml;sen des Ereignisses angemeldeten Benutzers<\/span><\/b><\/p>\n<h2>XEvents-Sitzung manuell starten<\/h2>\n<p>Wenn Sie die Sitzung nicht direkt nach dem Erstellen der Sitzung starten wollen, k&ouml;nnen Sie dies auch noch nachholen. Dazu w&auml;hlen Sie einfach den Kontextmen&uuml;-Eintrag <b>Sitzung starten <\/b>des Eintrags f&uuml;r die jeweilige Sitzung im Objekt-Explorer aus (siehe Bild 9). Dort k&ouml;nnen Sie auch die aktuelle Sitzung beenden.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_1158_009.png\" alt=\"Starten einer Sitzung\" width=\"424,7115\" height=\"380,4707\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Starten einer Sitzung<\/span><\/b><\/p>\n<h2>XEvents-Sitzung live ansehen<\/h2>\n<p>Eine M&ouml;glichkeit, die Liste der Ereignisse im Fenster <b>Live Data <\/b>zu leeren, ist das Schlie&szlig;en des Fensters und das erneute Aktivieren der Anzeige der Livedaten. Den Eintrag <b>Livedaten <\/b>ansehen finden Sie ebenfalls im Kontextmen&uuml; der jeweiligen Sitzung.<\/p>\n<h2>Sitzung als Vorlage speichern<\/h2>\n<p>Anfang hatten Sie die M&ouml;glichkeit, eine neue Sitzung auf Basis einer Vorlage zu erstellen. Um eine solche Sitzungsvorlage zu erstellen, exportieren Sie diese mit dem Kontextmen&uuml;-Eintrag <b>Sitzung exportieren&#8230; <\/b>beispielsweise unter dem Namen <b>Beispielvorlage.xml<\/b>.<\/p>\n<p>Wenn Sie danach eine neue Sitzung erstellen, k&ouml;nnen Sie die soeben gespeicherte Vorlage in der Liste der Vorlagen ausw&auml;hlen (siehe Bild 10).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_1158_010.png\" alt=\"Anlegen einer neuen Sitzung auf Basis einer benutzerdefinierten Vorlage\" width=\"549,6265\" height=\"386,037\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Anlegen einer neuen Sitzung auf Basis einer benutzerdefinierten Vorlage<\/span><\/b><\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Mit den XEvents, zu Deutsch &#8222;Erweiterte Ereignisse&#8220;, k&ouml;nnen Sie alle Aktionen, die im SQL Server ausgef&uuml;hrt werden, tracken und detaillierte Informationen &uuml;ber jedes Ereignis ausgeben lassen. Auf diese Weise k&ouml;nnen Sie nicht nur kleinere R&auml;tsel l&ouml;sen wie im Beispiel dieses Beitrags, sondern auch noch wesentlich wichtigere Aufgaben erledigen &#8211; zum Beispiel die Performance-Optimierung einer Verbindung zwischen einem Access-Frontend und einem SQL Server-Backend. Fr&uuml;her oder sp&auml;ter werden wir uns in einem weiteren Beitrag der Behebung eines Performance-Problems widmen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn es darum ging, die Zugriffe auf eine SQL Server-Datenbank zu tracken &#8211; sei es zur Performance-Messung oder zur Optimierung einer Datenbank &#8211; 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 &#8222;Erweiterte Ereignisse&#8220;. In diesem Beitrag wollen wir Ihnen diesen Objekttyp vorstellen. Das einfache Beispiel zu diesem Zweck stammt aus einem anderen Beitrag namens &#8222;SQL Server-Zugriff ohne gespeichertes Kennwort&#8220;. 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.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662018,66052018,44000022],"tags":[],"class_list":["post-55001158","post","type-post","status-publish","format-standard","hentry","category-662018","category-66052018","category-SQL_Server_und_Co"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SQL Server: Zugriffe untersuchen mit XEvents - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server: Zugriffe untersuchen mit XEvents\" \/>\n<meta property=\"og:description\" content=\"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 &quot;Erweiterte Ereignisse&quot;. In diesem Beitrag wollen wir Ihnen diesen Objekttyp vorstellen. Das einfache Beispiel zu diesem Zweck stammt aus einem anderen Beitrag namens &quot;SQL Server-Zugriff ohne gespeichertes Kennwort&quot;. 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.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-13T21:12:37+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg06.met.vgwort.de\/na\/c99bf64f70af4f298b1e9c3023535c84\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"SQL Server: Zugriffe untersuchen mit XEvents\",\"datePublished\":\"2020-05-13T21:12:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/\"},\"wordCount\":2342,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/c99bf64f70af4f298b1e9c3023535c84\",\"articleSection\":[\"2018\",\"5\\\/2018\",\"SQL Server und Co.\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/\",\"name\":\"SQL Server: Zugriffe untersuchen mit XEvents - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/c99bf64f70af4f298b1e9c3023535c84\",\"datePublished\":\"2020-05-13T21:12:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/c99bf64f70af4f298b1e9c3023535c84\",\"contentUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/c99bf64f70af4f298b1e9c3023535c84\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server: Zugriffe untersuchen mit XEvents\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL Server: Zugriffe untersuchen mit XEvents - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/","og_locale":"de_DE","og_type":"article","og_title":"SQL Server: Zugriffe untersuchen mit XEvents","og_description":"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.","og_url":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-13T21:12:37+00:00","og_image":[{"url":"http:\/\/vg06.met.vgwort.de\/na\/c99bf64f70af4f298b1e9c3023535c84","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"SQL Server: Zugriffe untersuchen mit XEvents","datePublished":"2020-05-13T21:12:37+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/"},"wordCount":2342,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/c99bf64f70af4f298b1e9c3023535c84","articleSection":["2018","5\/2018","SQL Server und Co."],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/","url":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/","name":"SQL Server: Zugriffe untersuchen mit XEvents - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/c99bf64f70af4f298b1e9c3023535c84","datePublished":"2020-05-13T21:12:37+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/#primaryimage","url":"http:\/\/vg06.met.vgwort.de\/na\/c99bf64f70af4f298b1e9c3023535c84","contentUrl":"http:\/\/vg06.met.vgwort.de\/na\/c99bf64f70af4f298b1e9c3023535c84"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/SQL_Server_Zugriffe_untersuchen_mit_XEvents\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"SQL Server: Zugriffe untersuchen mit XEvents"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001158"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001158\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}