Heim >Datenbank >MySQL-Tutorial >Wie können erweiterte SQL Server-Ereignisse die SQL-Anweisungen identifizieren, die sich auf eine bestimmte Tabelle auswirken?

Wie können erweiterte SQL Server-Ereignisse die SQL-Anweisungen identifizieren, die sich auf eine bestimmte Tabelle auswirken?

Susan Sarandon
Susan SarandonOriginal
2025-01-04 03:58:40979Durchsuche

How Can SQL Server Extended Events Identify the SQL Statements Affecting a Specific Table?

Erstellen eines Triggers zum Erfassen von ausgeführtem SQL für eine betroffene Tabelle

Problem:

An Um mysteriöse Aktualisierungen einer bestimmten Tabelle zu beheben, ist es notwendig, die ausgeführte SQL zu identifizieren, die zu den Änderungen geführt hat. Leider befindet sich die Geschäftslogik der Anwendung hauptsächlich in der Datenbank, was es schwierig macht, die Quelle dieser Aktualisierungen zu ermitteln.

Ziel:

Erstellen Sie einen Trigger für die Tabelle in Frage, um die SQL-Anweisungen zu protokollieren, die sie betreffen, und so die Identifizierung des schuldigen SQL zu ermöglichen.

Ansatz mit SQL Server Extended Veranstaltungen:

1. Datenbank zum Testen einrichten:

Erstellen Sie eine einfache Datenbank mit den erforderlichen Tabellen und Triggern, um das problematische Szenario zu simulieren.

2. Erstellen Sie eine erweiterte Ereignissitzung:

Verwenden Sie erweiterte SQL Server-Ereignisse, um die für die Tabelle ausgeführten SQL-Anweisungen zu erfassen. Dazu gehört das Erstellen einer Ereignissitzung, die nach dem Auslöser filtert, der zum Simulieren der Aktualisierungen verwendet wird.

3. Proc1-Prozedur auslösen:

Proc1 ausführen, was eine Kaskade von Prozeduraufrufen auslöst, die schließlich die mysteriöse Aktualisierung der Tabelle verursachen.

4. Stoppen Sie die erweiterte Ereignissitzung:

Nachdem die Verfahren ausgeführt wurden, stoppen Sie die erweiterte Ereignissitzung.

5. Ereignisdaten analysieren:

Verwenden Sie die Funktion fn_xe_file_target_read_file, um die von der erweiterten Ereignissitzung erfassten Daten zu lesen und den Aufrufstapel zu analysieren, um die ausgeführten SQL-Anweisungen zu identifizieren.

Vorteile von Erweiterter Ereignisansatz:

  • Erfasst alle ausgeführten SQL-Anweisungen, einschließlich gespeicherter Prozeduren und Trigger
  • Bietet detaillierte Aufrufstapelinformationen zur Verfolgung des Ausführungspfads
  • Erfordert keine Codeänderung an der Anwendung

Zusätzlich Vorteil:

Die erfassten Daten zu erweiterten Ereignissen können auch zur Behebung von Leistungsproblemen verwendet werden, indem die Abfrageausführungspläne und -ausführungen analysiert werden Statistiken.

Das obige ist der detaillierte Inhalt vonWie können erweiterte SQL Server-Ereignisse die SQL-Anweisungen identifizieren, die sich auf eine bestimmte Tabelle auswirken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn