SQL Server-Überwachungsdatensätze

Gilt für:SQL Server

Die Audit-Funktion von SQL Server ermöglicht Ihnen, Ereignisgruppen und Ereignisse auf Server- und Datenbankebene zu überwachen. Weitere Informationen finden Sie unter SQL Server Audit (Datenbank-Engine). SQL Server.

Überwachungen bestehen aus null oder mehr Überwachungsaktionselementen, die in einem Überwachungszielaufgezeichnet werden. Beim Überwachungsziel kann es sich um eine Binärdatei, das Windows-Sicherheitsereignisprotokoll oder das Windows-Anwendungsereignisprotokoll handeln. Die an das Ziel gesendeten Datensätze können die in der folgenden Tabelle beschriebenen Elemente enthalten:

Spaltenname Beschreibung Typ Immer verfügbar
event_time Datum und Uhrzeit, zu der die überprüfbare Aktion ausgelöst wird. datetime2 Ja
Sequenznummer Hält die Reihenfolge der Datensätze innerhalb eines einzelnen Überwachungsdatensatzes fest, der zu groß für den Schreibpuffer für Überwachungen ist. int Ja
action_id ID der Aktion

Tipp: Damit action_id als Prädikat verwendet werden kann, muss eine Konvertierung von einer Zeichenfolge in einen numerischen Wert durchgeführt werden. Weitere Informationen finden Sie unter Filtern von SQL Server Audit nach dem action_id-Prädikat oder class_type-Prädikat.
varchar(4) Ja
erfolgreich Gibt an, ob die Aktion, die das Ereignis ausgelöst hat, erfolgreich war. Bei allen anderen Ereignissen als Anmeldeereignissen meldet dies nur, ob die Berechtigungsprüfung erfolgreich war oder fehlgeschlagen ist, nicht der Vorgang.
- 1 = Erfolg
- 0 = Fehler
bit Ja
permission_bitmask Bei einigen Aktionen handelt es sich um die Berechtigungen, die erteilt, verweigert oder widerrufen wurden. varbinary(16) Nein
is_column_permission Indikator, der angibt, ob es sich um eine Berechtigung auf Spaltenebene handelt. Gibt 0 zurück, wenn die permission_bitmask = 0.
- 1 = Wahr
- 0 = Falsch
bit Nein
session_id Die ID der Sitzung, in der das Ereignis aufgetreten ist. smallint Ja
server_principal_id ID des Anmeldekontexts, in dem die Aktion ausgeführt wird. int Ja
database_principal_id ID des Datenbankbenutzerkontexts, in dem die Aktion ausgeführt wird. Gibt 0 zurück, wenn dies nicht zutrifft. Beispielsweise ein Servervorgang. int Nein
target_server_principal_id Serverprinzipal, für den der GRANT/DENY/REVOKE-Vorgang ausgeführt wird. Gibt 0 zurück, falls nicht zutreffend. int Ja
target_database_principal_id Der Datenbankprinzipal, für den der GRANT/DENY/REVOKE-Vorgang ausgeführt wird. Gibt 0 zurück, falls nicht zutreffend. int Nein
object_id Die ID der Entität, für die die Überwachung aufgetreten ist. Dazu gehören:
Serverobjekte
Datenbanken
Datenbankobjekte
Schemaobjekte
Gibt 0 zurück, wenn die Entität der Server selbst ist oder wenn die Überwachung nicht auf Objektebene ausgeführt wird. Beispiel: Authentifizierung.
int Nein
class_type Der Typ der auditierbaren Entität, für die die Überwachung ausgeführt wird. varchar(2) Ja
session_server_principal_name Hauptserver für die Sitzung. sysname Ja
server_principal_name Aktuelle Anmeldung. sysname Ja
server_principal_sid Aktuelle Anmeldungs-SID. varbinary(85) Ja
database_principal_name Aktueller Benutzer. sysname Nein
target_server_principal_name Ziel-Anmeldung für die Aktion. Gibt NULL zurück, falls nicht zutreffend. sysname Nein
target_server_principal_sid SID der Zielanmeldung. Gibt NULL zurück, falls nicht zutreffend. varbinary(85) Nein
target_database_principal_name Zielbenutzer der Aktion. Gibt NULL zurück, falls nicht zutreffend. sysname Nein
server_instance_name Der Name der Serverinstanz, in der die Überwachung aufgetreten ist. Das Standardformat server\instance wird verwendet. sysname Ja
database_name Der Datenbankkontext, in dem die Aktion aufgetreten ist. Nullfähig. Gibt NULL für Audits zurück, die auf Serverebene auftreten. sysname Nein
schema_name Schemakontext, in dem die Aktion durchgeführt wurde sysname Nein
object_name Name der Entität, für die die Überwachung durchgeführt wurde Dazu gehören:
Serverobjekte
Datenbanken
Datenbankobjekte
Schemaobjekte
Nullbar Gibt NULL zurück, wenn es sich bei der Entität um den Server selbst handelt oder wenn die Überwachung nicht auf Objektebene ausgeführt wird. Beispiel: Authentifizierung.
sysname Nein
Anweisung T-SQL-Anweisung, falls vorhanden. Gibt NULL zurück, falls nicht zutreffend. nvarchar(4000) Nein
additional_information Eindeutige Informationen, die nur für ein einzelnes Ereignis gelten, werden als XML zurückgegeben. Einige überprüfbare Aktionen enthalten diese Art von Informationen.

Eine Ebene des TSQL-Stapels wird im XML-Format für Aktionen angezeigt, denen der TSQL-Stapel zugeordnet ist. Das XML-Format sieht wie folgt aus:
<tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>
Frame nest_level gibt die aktuelle Schachtelungsebene des Frames an. Der Modulname wird im dreiteiligen Format (database_name, schema_name und object_name) dargestellt. Der Modulname wird geparst, um ungültige XML-Zeichen wie '\<', '>', '/' und '_x' zu umgehen. Sie werden als _xHHHH\_ maskiert. Der HHHH steht für den vierstelligen hexadezimalen UCS-2-Code für das Zeichen
Nullbar Gibt NULL zurück, wenn keine zusätzlichen Informationen durch das Ereignis übermittelt werden.
nvarchar(4000) Nein
file_name Der Pfad und der Name der Überwachungsprotokolldatei, aus der der Datensatz stammt. varchar(260) Ja
audit_file_offset Gilt nur für: NUR SQL Server

Der Pufferoffset in der Datei, die den Überwachungsdatensatz enthält.
bigint Nein
user_defined_event_id Gilt für: SQL Server 2012 (11.x) und höher, Azure SQL-Datenbank und SQL Managed Instance

Benutzerdefinierte Ereignis-ID, die als Argument an sp_audit_writeNULL für Systemereignisse (Standard) und nonzero für benutzerdefinierte Ereignisse übergeben wird. Weitere Informationen finden Sie unter sp_audit_write (Transact-SQL).
smallint Nein
benutzerdefinierte_Informationen Gilt für: SQL Server 2012 (11.x) und höher, Azure SQL-Datenbank und SQL Managed Instance

Wird verwendet, um zusätzliche Informationen aufzuzeichnen, die der Benutzer mithilfe der sp_audit_write gespeicherten Prozedur im Überwachungsprotokoll aufzeichnen möchte.
nvarchar(4000) Nein
audit_schema_version Immer 1 int Ja
Sequenzgruppen-ID Gilt nur für: NUR SQL Server

Eindeutiger Bezeichner
varbinary(85) Nein
transaction_id Gilt für: NUR SQL Server (ab 2016)

Eindeutiger Bezeichner zum Identifizieren mehrerer Überwachungsereignisse in einer Transaktion
bigint Nein
client_ip Gilt für: Azure SQL-Datenbank + SQL Server (ab 2017)

Quell-IP der Clientanwendung
nvarchar(128) Nein
application_name Gilt für: Azure SQL-Datenbank + SQL Server (ab 2017)

Name der Clientanwendung, die die Anweisung ausgeführt hat, die das Überwachungsereignis verursacht hat
nvarchar(128) Nein
duration_milliseconds Gilt für: Azure SQL-Datenbank und SQL Managed Instance

Dauer der Abfrageausführung in Millisekunden
bigint Nein
response_rows Gilt für: Azure SQL-Datenbank und SQL Managed Instance

Die Anzahl der zeilen, die im Resultset zurückgegeben wurden.
bigint Nein
affected_rows Gilt nur für: Nur Azure SQL-Datenbank

Die Anzahl der zeilen, die von der ausgeführten Anweisung betroffen sind.
bigint Nein
connection_id Gilt für: Azure SQL-Datenbank und SQL Managed Instance

ID der Verbindung auf dem Server
GUID Nein
daten_sensitivität_information Gilt nur für: Nur Azure SQL-Datenbank

Informationstypen und Vertraulichkeitsbezeichnungen, die von der überwachten Abfrage zurückgegeben werden, basierend auf den klassifizierten Spalten in der Datenbank. Weitere Informationen zur Ermittlung und Klassifizierung von Azure SQL-Datenbankdaten
nvarchar(4000) Nein
host_name Hostname der Clientverbindung nvarchar(128) Nein
session_context Sitzungskontextinformationen für die Verbindung nvarchar(4000) Nein
Client-TLS-Version Gilt für: SQL Server 2022 und höher

TLS-Versionsnummer, die von der Clientverbindung verwendet wird
int Nein
client_tls_version_name Gilt für: SQL Server 2022 und höher

Tls-Versionsname, der von der Clientverbindung verwendet wird
nvarchar(128) Nein
database_transaction_id Datenbanktransaktions-ID bigint Nein
Startsequenznummer_Des_Ledgers Gilt für: SQL Server 2022 und höher

Ledger-Startsequenznummer für Ledger-Operationen
bigint Nein
externe_Richtlinienberechtigungen_überprüft Berechtigungen für externe Richtlinien, die während des Vorgangs überprüft wurden nvarchar(4000) Nein

Hinweise

Einige Aktionen füllen den Wert einer Spalte nicht aus, da er möglicherweise nicht anwendbar auf die Aktion ist.

Die SQL Server-Überwachung speichert 4.000 Zeichen an Daten für Zeichenfelder in einem Überwachungsdatensatz. Wenn die additional_information- und statement-Werte, die von einer überprüfbaren Aktion zurückgegeben werden, mehr als 4000 Zeichen enthalten, wird die sequence_number-Spalte verwendet, um mehrere Datensätze im Überwachungsbericht für eine einzelne Aktion zu speichern. Der Prozess sieht folgendermaßen aus:

  • Die Anweisung-Spalte ist in 4.000 Zeichen unterteilt.

  • SQL Server Audit schreibt die partiellen Daten als erste Zeile des Überwachungsdatensatzes. Alle anderen Felder werden in jeder Zeile dupliziert.

  • Der sequence_number Wert wird erhöht.

  • Dieser Prozess wird wiederholt, bis alle Daten aufgezeichnet wurden.

Sie können die Daten verknüpfen, indem Sie die Zeilen sequenziell mithilfe des sequence_number-Werts und der Spalten event_Time, action_id und session_id lesen, um die Aktion zu identifizieren.