Protokolldateien der SQL-Server-Abfragen 

Einführung

Dieses Werkzeug steht bei Verwendung von SQL Server™ als Datenbank in jeder beliebigen Maske im Menü Tools des oberen Maskenbereichs zur Verfügung. Dort sind die folgenden beiden Menüeinträge vorhanden:

SQL-Server-Protokolle aktivieren

Mit der SQL-Server-Funktionalität SQL_TRACE werden die bei der Ausführung von SQL-Befehlen durchgeführten Ereignisse in eine Datei gespeichert, die anschließend analysiert werden kann.

Deaktivierung Protokoll

Von dieser Funktion wird die erneute Verarbeitung angestoßen. Dieses Tool verarbeitet die durch Aktivierung erhaltene Protokolldatei und zeigt das Ergebnis an. Dies ermöglicht die Anzeige sämtlicher während der Aktivierung ausgeführten SQL-Aktionen.

Vorbedingungen

Berechtigung

Der Benutzer muss für die Verwendung des Debuggers (Parameter DBG) berechtigt sein.

Technische Einschränkung

Die Funktion kann nur laufen, wenn ein Verarbeitungsserver installiert und auf der Datenbankmaschine aktiv ist.

Benutzerschnittstelle

Nach Aufruf der Funktion öffnet sich eine Maske, in verschiedene Optionen erfasst werden kann.

Übernahme der Ergebnisse

Hier muss angegeben werden, welche Daten für die Analyse gesammelt werden sollen.

Mit der Option Standard können die Ausführungspläne der Abfragen übernommen werden.

Mit der Option Tuning können die Daten zu den ausgeführten SQL-Aktionen übernommen werden.

Mit "Erweiterte Ereignisparameter" kann der Benutzer die zu sammelnden Ereignisse selbst bestimmen. Im entsprechenden Fenster können sämtliche möglichen Optionen ausgewählt werden.

Diese Ereignisse sind nach Typen gruppiert. Weitere Erläuterungen zu den Ereignissen finden Sie in der SQL-Server-Dokumentation, zu der ein Ausschnitt im Anhang vorhanden ist.

Sortieroptionen

Standardmäßig werden die SQL-Befehle in chronologischer Reihenfolge abgearbeitet. Es ist aber auch möglich, eine andere Reihenfolge anzugeben.

Hierfür stehen mehrere Sortieroptionen zur Verfügung, wobei zunächst die teuersten aufgelistet werden.

Ergebnisdarstellung

Der Benutzer kann sich dafür entscheiden, nur die n ersten Datensätze aufzulisten.

Entscheidet er sich für eine Sortierung, werden die n ersten an die Datenbank gesendeten Ereignisse ausgegeben, was der teuersten Sortierung entspricht.

Verwendung des erhaltenen Protokolls

Eine mögliche Verwendung wäre, die Ausführungsdauer der SQL-Abfragen und -Aktionen zu prüfen (Ereignis "Completed").

Anhand der Kosten pro Aktion kann geprüft werden, ob die Abfrage performant ist und ob die Indizes verwendet werden.

Es sollte kein Table Scan gefunden werden.

Es sollte auch kein Constant Scan gefunden werden.

Wenn ein Index verwendet wird (Seek) muss geprüft werden, ob im Seek-Teil auch die maximale Anzahl von Indexspalten verwendet wird.

Auszug aus der SQL-Server-Dokumentation

In nachstehender Tabelle sind die Ereignisse zusammengefasst, die in ein Protokoll hinzugefügt oder aus einem Protokoll herausgelöscht werden können.

Ereignisnummer


Ereignisname


Beschreibung

0-9

Reserved

 

10

RPC:Completed

Tritt nach der Beendigung eines Remote-Procedure-Prozesses (RPC) auf.

11

RPC:Starting

Tritt nach dem Aufruf eines Remote-Procedure-Prozesses (RPC) auf.

12

SQL:BatchCompleted

Tritt nach Aufruf eines Remote-Procedure-Prozesses (RPC) auf.

13

SQL:BatchStarting

Tritt nach Start eines Transact-SQL-Anweisungsstapels auf

14

Login

Tritt auf, wenn sich ein Benutzer erfolgreich an SQL Server angemeldet hat

15

Logout

Tritt auf, wenn sich ein Benutzer von SQL Server abgemeldet hat

16

Achtung

Tritt gleichzeitig mit Warnungsereignissen wie Unterbrechungsabfragen oder Verbindungsunterbrechungen des Clients auf

17

ExistingConnection

Ermittelt sämtliche Aktivitäten des mit SQL Server verbundenen Benutzers vor dem Protokollstart

18

ServiceControl

Tritt auf, wenn sich der Servicestatus von SQL Server ändert

19

DTCTransaction

Protokolliert die vom Microsoft Distributed Transaction Coordinator (MS DTC) koordinierten Transaktionen zwischen zwei oder mehreren Datenbanken

20

Login Failed

Weist auf einen gescheiterten Verbindungsversuch mit SQL Server hin

21

EventLog

Weist darauf hin, dass die Ereignisse in das Anwendungsjournal von Microsoft Windows NT® eingetragen wurden

22

ErrorLog

Weist darauf hin, dass Fehlerereignisse in das Fehlerjournal von SQL Server eingetragen wurden

23

Lock:Release

Weist auf die Aufhebung einer Ressourcensperre hin, z. B. einer Seite

24

Lock:Acquire

Weist auf die Sperrung einer Ressource hin, z. B. einer Datenseite

25

Lock:Deadlock

Zwei parallele Transaktionen sperren sich gegenseitig. Eine dieser Transaktionen hat Sperren angefordert, die nicht mit den Ressourcen der anderen Transaktion vereinbar sind.

26

Lock:Canceled

Weist auf die Aufhebung einer Ressourcensperre hin (z. B. bei einer gegenseitigen Blockierung)

27

Lock:Timeout

Bei der Anforderung einer Sperre auf eine Ressource (z. B. auf eine Seite) wurde die zulässige Wartezeit überschritten, weil die betreffende Ressource von einer anderen Transaktion gesperrt ist. Die Wartezeit wird mit der Funktion @@LOCK_TIMEOUT ermittelt und kann mithilfe der Anweisung SET LOCK_TIMEOUT definiert werden.

28

DOP Event

Tritt vor der Ausführung einer SELECT-, INSERT oder UPDATE-Anweisung auf

29-31

Reserved

Die Verwendung von Ereignis 28 ist vorzuziehen

32

Reserved

 

33

Ausnahme

In SQL Server ist eine Ausnahme aufgetreten

34

SP:CacheMiss

Im Cache wurde eine Stored Procedure nicht gefunden

35

SP:CacheInsert

In den Cache wurde ein Element eingefügt

36

SP:CacheRemove

Aus dem Cache wurde ein Element gelöscht

37

SP:Recompile

Eine Stored Procedure wurde erneut kompliziert

38

SP:CacheHit

Im Cache wurde eine Stored Procedure gefunden

39

SP:ExecContextHit

Im Cache wurde die Ausführungsversion einer Stored Procedure gefunden.

40

SQL:StmtStarting

Tritt nach Start einer Transact-SQL-Anweisung auf

41

SQL:StmtCompleted

Tritt bei Beendigung einer Transact-SQL-Anweisung auf

42

SP:Starting

Die Stored Procedure wurde gestartet

43

SP:Completed

Die Stored Procedure wurde beendet

44

Reserved

Die Verwendung von Ereignis 40 ist vorzuziehen

45

Reserved

Die Verwendung von Ereignis 41 ist vorzuziehen

46

Objetct:Created

Es wurde ein Objekt angelegt, z. B. mit einer der Anweisungen CREATE INDEX, CREATE TABLE oder CREATE DATABASE

47

Objetct:Deleted

Es wurde ein Objekt gelöscht, z. B. mit einer der Anweisungen DROP INDEX oder DROP TABLE

48

Reserved

 

49

Reserved

 

50

SQL Transaction

Protokolliert die Transact-SQL-Anweisungen BEGIN, COMMIT, SAVE und ROLLBACK TRANSACTION

51

Scan:Started

Die Analyse einer Tabelle oder eines Index wurde gestartet

52

Scan:Stopped

Die Analyse einer Tabelle oder eines Index wurde beendet

53

CursorOpen

Weist auf einen offenen Cursor in einer Transact-SQL-Anweisung hin (ODBC, OLE, DB oder DB-Library)

54

Transaktionsprotokoll

Protokolliert, zu welchem Zeitpunkt die Transaktionen in das Transaktionsjournal geschrieben werden

55

HashWarning

Ein Trunkierungsvorgang (trunkierter Join, trunkierte Aggregation, trunkierte Vereinigung, Trunkierung mit distinct), der nicht auf einem Partitionsbuffer läuft, wechselt in einen alternativen Ausführungsplan. Dies ist auf die Rekursionstiefe, die Datenverschiebung, Protokollindikatoren oder Bit-Zähler zurückzuführen.

56-57

Reserved

 

58

Auto Update Stats

Die Indexstatistiken wurden automatisch aktualisiert

59

Lock:Deadlock Chain

Tritt bei allen Ereignissen auf, die eine Sperre nach sich ziehen

60

Lock:Escalation

Tritt auf, wenn die Sperren ausgeweitet werden. Beispiel: Eine Zeilensperre wird zu einer Seitensperre ausgeweitet.

61

OLE DB Errors

Ein OLE-DB-Fehler ist aufgetreten

62-66

Reserved

 

67

ExecutionWarnings

Warnungen, die bei der Ausführung einer SQL-SERVER-Anweisung oder -Stored-Procedure aufgetreten sind

68

Execution Plan

Zeigt die Baumstruktur des Ausführungsplans der SQL-Anweisung an

69

Sort Warnings

Sortiervorgänge, die nicht im Speicher ausgeführt werden konnten. Dies beinhaltet nicht die Sortiervorgänge mit Indexanlage, sondern lediglich die Sortiervorgänge innerhalb einer Abfrage (z. B. ORDER-BY-Klausel oder SELECT-Anweisung).

70

CursorPrepare

Weist darauf hin, dass in einer Transact-SQL-Anweisung ein Cursor für die Verwendung vorbereitet wird (ODBC, OLE, DB oder DB-Library)

71

Prepare SQL

ODBC, OLE DB oder DB-Library hat eine oder mehrere zu verwendende Transact-SQL-Anweisungen vorbereitet

72

Exec Prepared SQL

ODBC, OLE DB oder DB-Library hat eine oder mehrere vorbereitete Transact-SQL-Anweisungen ausgeführt

73

Unprepare SQL

ODBC, OLE DB oder DB-Library hat eine oder mehrere vorbereitete Transact-SQL-Anweisungen storniert

74

CursorExecute

Ein zuvor in einer Transact-SQL-Anweisung mit ODBC, OLE DB oder DB-Library vorbereiteter Cursor wird ausgeführt

75

CursorRecompile

Ein in einer Transact-SQL von ODBC oder DB-Library geöffneter Cursor wurde entweder direkt oder aufgrund einer Schemaänderung erneut kompiliert.

Wird bei ANSI- und nicht-ANSI-Cursorn angestoßen.

76

CursorImplicitConversion

In einer Transact-SQL-Anweisung wird ein Cursor von SQL Server in einen anderen Typ umgewandelt.

Wird bei ANSI- und nicht-ANSI-Cursorn angestoßen.

77

CursorUnprepare

Ein in einer Transact-SQL-Anweisung vorbereiteter Cursor wird von ODBC, OLE DB oder DB-Library gelöscht

78

CursorClose

Ein zuvor in einer Transact-SQL-Anweisung mit ODBC, OLE DB oder DB-Library geöffneter Cursor wird geschlossen

79

Missing Column Statistics

Spaltenstatistiken, die für die Optimierung verwendet werden könnten, sind nicht verfügbar

80

Missing Join Predicate

Eine Abfrage ohne Join wird ausgeführt. Dies kann eine längere Laufzeit bedeuten.

81

Server Memory Change

Der von Microsoft SQL Server belegte Speicher ist größer oder kleiner geworden, und zwar um den größeren Wert aus 1 MB und 5 % des maximalen Speicherbereichs.

82-91

User Configurable (0-9)

Der Benutzer hat Ereignisdaten definiert

92

Data File Auto Grow

Eine Journaldatei wurde automatisch vom Server vergrößert

93

Log File Auto Grow

Eine Journaldatei wurde automatisch vom Server vergrößert

94

Data File Auto Shrink

Eine Journaldatei wurde automatisch vom Server verkleinert

95

Log File Auto Shrink

Eine Journaldatei wurde automatisch vom Server verkleinert

96

Show Plan Text

Zeigt die Baumstruktur des Ausführungsplans der SQL-Anweisung im Abfragen-Optimizer an

97

Show Plan ALL

Zeigt den Abfrageplan mit einer vollständigen Auskunft über die Kompilierung der laufenden SQL-Anweisung an

98

Show Plan Statistics

Zeigt den Abfrageplan mit einer vollständigen Auskunft über die Ausführung der laufenden SQL-Anweisung an

99

Reserved

 

100

RPC Output Parameter

Erzeugt die Parameterausgabewerte für alle RPC

101

Reserved

 

102

Audit Statement GDR

Tritt immer auf, wenn GRANT, DENY oder REVOKE vom Benutzer abgesetzt werden, um in SQL Server die Genehmigung für eine Anweisung zu erhalten

103

Audit Object GDR

Tritt immer auf, wenn GRANT, DENY oder REVOKE vom Benutzer abgesetzt werden, um in SQL Server die Genehmigung für ein Objekt zu erhalten

104

Audit Add/Drop Login

Tritt auf, wenn eine Verbindung an SQL Server hinzugefügt oder gelöscht wird; für sp_addlogin und sp_droplogin

105

Audit Login GDR

Tritt auf, wenn eine Verbindung an Microsoft Windows® hinzugefügt oder gelöscht wird; für p_grantlogin, sp_revokelogin und sp_denylogin

106

Audit Login Change Property

Tritt auf, wenn eine Verbindungseigenschaft geändert wird (außer Passwort); für sp_defaultdb und sp_defaultlanguage

107

Audit Login Change Password

Tritt auf, wenn sich das Passwort für die Verbindung an SQL Server ändert.

Die Passwörter werden nicht gespeichert.

108

Audit Add Login to Server Role

Tritt auf, wenn eine Verbindung einer festen Serverrolle hinzugefügt oder gelöscht wird; für sp_addsrvrolemember und sp_dropsrvrolemember

109

Audit Add DB User

Tritt auf, wenn die Verbindung eines Datenbankbenutzers in die Datenbank hinzugefügt oder aus dieser gelöscht wird (Windows und SQL Server); für sp_grantdbaccess, sp_revokedbaccess, sp_adduser und sp_dropuser

110

Audit Add Member to DB

Tritt auf, wenn die Verbindung eines Datenbankbenutzers in die Datenbank hinzugefügt oder aus dieser gelöscht wird (fest oder benutzerdefiniert); für sp_addrolemember, sp_droprolemember und sp_changegroup

111

Audit Add/Drop Role

Tritt auf, wenn die Verbindung eines Datenbankbenutzers in die Datenbank hinzugefügt oder aus dieser gelöscht wird; für sp_addrole und sp_droprole

112

App Role Pass Change

Tritt auf, wenn das Passwort einer Anwendungsrolle geändert wird

113

Audit Statement Permission

Tritt bei der Verwendung einer Anweisungsgenehmigung auf (z. B. CREATIE TABLE)

114

Audit Object Permission

Tritt bei der Verwendung einer Objektgenehmigung auf (z. B. SELECT)

115

Audit Backup/Restore

Tritt auf, wenn ein BACKUP- oder RESTORE-Befehl gegeben wird

116

Audit DBCC

Tritt nach Start von DBCC-Anweisungen auf

117

Audit Change Audit

Tritt nach Änderungen des Audit-Protokolls auf

118

Audit Object Derived Permission

Tritt beim Absetzen der Objektbefehle CREATE, ALTER und DROP auf

Fehler

Während der Erfassung können außer den generischen Meldungen folgende Fehlermeldungen auftreten: :

"Fehler beim Zugriff auf den Datenbankserver"

Auf die Datenbankmaschine kann nicht zugegriffen werden, da entweder kein Verarbeitungsserver vorhanden ist oder dieser nicht läuft.

"Fehler beim Zugriff auf das Protokollverzeichnis der Datenbank"

Auf das als Protokollverzeichnis angegebene Verzeichnis kann nicht zugegriffen werden.