sys.fn_get_audit_file (Transact-SQL)

Anwendungsbereich: JaSQL Server (alle unterstützten Versionen) JaAzure SQL-Datenbank JaVerwaltete Azure SQL-Instanz JaAzure Synapse Analytics

Gibt Informationen von einer Überwachungsdatei zurück, die von einer Serverüberwachung in SQL Server erstellt wurde. Weitere Informationen finden Sie unter SQL Server Audit (Datenbank-Engine).

Symbol für Themenlink Transact-SQL-Syntaxkonventionen

Syntax

fn_get_audit_file ( file_pattern,   
    { default | initial_file_name | NULL },   
    { default | audit_record_offset | NULL } )  

Argumente

file_pattern
Gibt das Verzeichnis oder den Pfad und den Dateinamen für den zu lesenden Überwachungsdateisatz an. Typ: nvarchar(260).

  • SQL Server:

    Dieses Argument muss sowohl einen Pfad (Laufwerksbuchstabe oder Netzwerkfreigabe) als auch einen Dateinamen umfassen. Diese können ein Platzhalterzeichen enthalten. Ein einzelnes Sternchen (*) kann verwendet werden, um mehrere Dateien aus einem Überwachungsdateisatz zu erfassen. Beispiel:

    • <path>\* – Sammeln Sie alle Überwachungsdateien am angegebenen Speicherort.

    • <path> \LoginsAudit_{GUID}* – Sammelt alle Überwachungsdateien mit dem angegebenen Namen und GUID-Paar.

    • <path> \LoginsAudit_{GUID}_00_29384.sqlaudit : Sammeln Sie eine bestimmte Überwachungsdatei.

  • Azure SQL-Datenbank:

    Mit diesem Argument wird eine Blob-URL (einschließlich Speicherendpunkt und Container) angegeben. Es wird zwar kein Platzhalterzeichen mit Sternchen unterstützt, Sie können jedoch ein Präfix für den Partiellen Dateinamen (Blob) (anstelle des vollständigen Blobnamens) verwenden, um mehrere Dateien (Blobs) zu sammeln, die mit diesem Präfix beginnen. Beispiel:

    • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/ : Erfasst alle Überwachungsdateien (Blobs) für die spezifische Datenbank.

    • <Storage_endpoint> / <Container> / <ServerName> / <DatabaseName> / <AuditName> / <CreationDate> / <FileName> .xel: Erfasst eine bestimmte Überwachungsdatei (Blob).

Hinweis

Einen Pfad ohne ein Dateinamenmuster zu übergeben generiert einen Fehler.

initial_file_name
Gibt den Pfad und den Namen einer bestimmten Datei im Überwachungsdateisatz an, von der an die Überwachungsdatensätze gelesen werden sollen. Typ: nvarchar(260).

Hinweis

Das initial_file_name argument muss gültige Einträge enthalten oder muss entweder die Standardeinstellung | NULL-Wert.

audit_record_offset
Gibt einen bekannten Speicherort mit der für initial_file_name angegebenen Datei an. Wenn dieses Argument verwendet wird, beginnt die Funktion mit dem Lesen beim ersten Datensatz des Puffers, der direkt nach dem festgelegten Offset folgt.

Hinweis

Das audit_record_offset argument muss gültige Einträge enthalten oder muss entweder die Standardeinstellung | NULL-Wert. Typ: bigint

Zurückgegebene Tabellen

In der folgenden Tabelle wird der Inhalt der Überwachungsdatei beschrieben, die von dieser Funktion zurückgegeben werden kann.

Spaltenname type BESCHREIBUNG
action_id varchar(4) ID der Aktion. Lässt keine NULL-Werte zu.
additional_information nvarchar(4000) Eindeutige Informationen, die nur für ein einzelnes Ereignis gelten, werden als XML zurückgegeben. Eine kleine Anzahl überwachbarer Aktionen enthält diese Art von Informationen.

Eine Ebene des TSQL-Stapels wird im XML-Format für Aktionen angezeigt, denen ein TSQL-Stapel zugeordnet ist. Das XML-Format sieht folgendermaßen 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 (database_name, schema_name und object_name) wird in einem aus drei Teilen bestehenden Format dargestellt. Der Modulname wird analysiert, um ungültige XML-Zeichen wie '\<' , , , als '>' '/' Escapezeichen zu '_x' verwenden. Sie werden als _xHHHH\_ escapet. HHHH steht für den vierstelligen hexadezimalen UCS 2-Code für das Zeichen

Lässt NULL-Werte zu. Gibt NULL zurück, wenn keine zusätzlichen vom Ereignis gemeldeten Informationen vorliegen.
affected_rows bigint Gilt für: Azure SQL-Datenbank nur

Anzahl der Zeilen, die von der ausgeführten Anweisung betroffen sind.
application_name nvarchar(128) Gilt für: Azure SQL-Datenbank + SQL Server (ab 2017)

Name der Clientanwendung, die die Anweisung ausgeführt hat, die das Überwachungsereignis verursacht hat
audit_file_offset bigint Gilt für: SQL Server nur

Der Pufferoffset in der Datei, die den Überwachungsdatensatz enthält. Lässt keine NULL-Werte zu.
audit_schema_version int Immer 1
class_type varchar(2) Der Typ der überwachbaren Entität, bei der die Überwachung auftritt. Lässt keine NULL-Werte zu.
client_ip nvarchar(128) Gilt für: Azure SQL-Datenbank + SQL Server (ab 2017)

Quell-IP-Adresse der Clientanwendung
connection_id GUID Gilt für: Azure SQL-Datenbank und SQL verwaltete Instanz

ID der Verbindung auf dem Server
data_sensitivity_information nvarchar(4000) Gilt für: Azure SQL-Datenbank nur

Informationstypen und Vertraulichkeitsbezeichnungen, die von der überwachten Abfrage zurückgegeben werden (je nach klassifizierter Spalte in der Datenbank) Weitere Informationen: Azure SQL-Datenbank: Datenermittlung und -klassifizierung
database_name sysname Der Datenbankkontext, in dem die Aktion aufgetreten ist. Lässt NULL-Werte zu. Gibt NULL für Überwachungen zurück, die auf Serverebene durchgeführt werden.
database_principal_id int ID des Datenbankbenutzerkontexts, in dem die Aktion ausgeführt wird. Lässt keine NULL-Werte zu. Wenn dies nicht anwendbar ist, wird 0 zurückgegeben. Zum Beispiel bei einem Servervorgang.
database_principal_name sysname Aktueller Benutzer. Lässt NULL-Werte zu. Gibt NULL zurück, wenn nicht verfügbar.
duration_milliseconds bigint Gilt für: Azure SQL-Datenbank und SQL verwaltete Instanz

Ausführungsdauer der Abfrage in Millisekunden
event_time datetime2 Datum und Uhrzeit, zu der die überprüfbare Aktion ausgelöst wird. Lässt keine NULL-Werte zu.
file_name varchar(260) Der Pfad und der Name der Überwachungsprotokolldatei, aus der der Datensatz stammt. Lässt keine NULL-Werte zu.
is_column_permission bit Flag, das angibt, ob die Berechtigung auf Benutzerebene erteilt wurde Lässt keine NULL-Werte zu. Gibt 0 zurück wenn permission_bitmask = 0.
1 = TRUE
0 = false
object_id int ID der Entität, für die die Überwachung durchgeführt wurde Hierzu gehören folgende Elemente:
Serverobjekte
Datenbanken
Datenbankobjekte
Schemaobjekte
Lässt keine NULL-Werte zu. Gibt 0 zurück, wenn die Entität der Server selbst ist oder die Überwachung nicht auf Objektebene durchgeführt wird. Zum Beispiel bei der Authentifizierung.
object_name sysname Name der Entität, für die die Überwachung durchgeführt wurde Hierzu gehören folgende Elemente:
Serverobjekte
Datenbanken
Datenbankobjekte
Schemaobjekte
Lässt NULL-Werte zu. Gibt NULL zurück, wenn die Entität der Server selbst ist oder die Überwachung nicht auf Objektebene durchgeführt wird. Zum Beispiel bei der Authentifizierung.
permission_bitmask varbinary(16) In einigen Aktionen sind dies die Berechtigungen, die gewährt, verweigert oder widerrufen wurden.
response_rows bigint Gilt für: Azure SQL-Datenbank und SQL verwaltete Instanz

Anzahl der im Resultset zurückgegebenen Zeilen.
schema_name sysname Schemakontext, in dem die Aktion durchgeführt wurde Lässt NULL-Werte zu. Gibt NULL für Überwachungen zurück, die außerhalb eines Schemas auftreten.
sequence_group_id varbinary Gilt für: nur SQL Server (ab 2016)

Eindeutiger Bezeichner
sequence_number int Hält die Reihenfolge der Datensätze innerhalb eines einzelnen Überwachungsdatensatzes fest, der zu groß für den Schreibpuffer für Überwachungen ist. Lässt keine NULL-Werte zu.
server_instance_name sysname Der Name der Serverinstanz, in der die Überwachung aufgetreten ist. Das Standardformat Server\Instanz wird verwendet.
server_principal_id int ID des Anmeldekontexts, in dem die Aktion ausgeführt wird. Lässt keine NULL-Werte zu.
server_principal_name sysname Aktuelle Anmeldung. Lässt NULL-Werte zu.
server_principal_sid varbinary Aktuelle Anmeldungs-SID. Lässt NULL-Werte zu.
session_id smallint Die ID der Sitzung, in der das Ereignis aufgetreten ist. Lässt keine NULL-Werte zu.
session_server_principal_name sysname Serverprinzipal für Sitzung. Lässt NULL-Werte zu. Gibt die Identität des ursprünglichen Anmeldenamens zurück, der mit der Instanz von SQL Server verbunden war, falls explizite oder implizite Kontextwechsel vorhanden waren.
statement nvarchar(4000) TSQL-Anweisung, falls vorhanden. Lässt NULL-Werte zu. Falls nicht zutreffend, wird NULL zurückgegeben.
Erfolgreich bit Gibt an, ob die Aktion, die das Ereignis ausgelöst hat, erfolgreich war Lässt keine NULL-Werte zu. Für alle Ereignisse außer Anmeldeereignisse meldet dies nur, ob die Berechtigungsüberprüfung erfolgreich war oder fehlgeschlagen ist, nicht der Vorgang.
1 = success
0 = Fehler
target_database_principal_id int Datenbankprinzipal, auf dem der GRANT-, DENY- oder REVOKE-Vorgang ausgeführt wird Lässt keine NULL-Werte zu. Falls nicht zutreffend, wird 0 zurückgegeben.
target_database_principal_name sysname Zielbenutzer der Aktion Lässt NULL-Werte zu. Falls nicht zutreffend, wird NULL zurückgegeben.
target_server_principal_id int Serverprinzipal, auf dem der GRANT-, DENY- oder REVOKE-Vorgang ausgeführt wird Lässt keine NULL-Werte zu. Falls nicht zutreffend, wird 0 zurückgegeben.
target_server_principal_name sysname Zielanmeldung der Aktion Lässt NULL-Werte zu. Falls nicht zutreffend, wird NULL zurückgegeben.
target_server_principal_sid varbinary SID der Zielanmeldung Lässt NULL-Werte zu. Falls nicht zutreffend, wird NULL zurückgegeben.
transaction_id bigint Gilt für: nur SQL Server (ab 2016)

Eindeutiger Bezeichner zum Identifizieren mehrerer Überwachungsereignisse in einer Transaktion
user_defined_event_id smallint Gilt für: SQL Server 2012 (11.x) und höher, Azure SQL-Datenbank und SQL verwaltete Instanz

Benutzerdefinierte Ereignis-ID, die als Argument an sp_audit_write. NULL für Systemereignisse (Standard) und Nicht-Null für benutzerdefinierte Ereignisse. Weitere Informationen finden Sie unter sp_audit_write (Transact-SQL).
user_defined_information nvarchar(4000) Gilt für: SQL Server 2012 (11.x) und höher, Azure SQL-Datenbank und SQL verwaltete Instanz

Wird zum Aufzeichnen zusätzlicher Informationen verwendet, die der Benutzer mithilfe der gespeicherten Prozedur im Überwachungsprotokoll aufzeichnen sp_audit_write soll.

Bemerkungen

  • Wenn das file_pattern-Argument, das an fn_get_audit_file übergeben wird, auf einen Pfad oder eine Datei verweist, der bzw. die nicht vorhanden ist, oder wenn die Datei keine Überwachungsdatei ist, wird die MSG_INVALID_AUDIT_FILE zurückgegeben.
  • fn_get_audit_file kann nicht verwendet werden, wenn die Überwachung mit den Optionen APPLICATION_LOG , SECURITY_LOG oder EXTERNAL_MONITOR wird.

Berechtigungen

  • SQL Server: Erfordert die CONTROL SERVER-Berechtigung.
  • Azure SQL-Datenbank: Erfordert die CONTROL DATABASE-Berechtigung.
    • Serveradministratoren können auf Überwachungsprotokolle aller Datenbanken auf dem Server zugreifen.
    • Nicht-Serveradministratoren können nur von der aktuellen Datenbank aus auf Überwachungsprotokolle zugreifen.
    • Blobs, die die oben genannten Kriterien nicht erfüllen, werden übersprungen (eine Liste übersprungener Blobs wird in der Abfrageausgabemeldung angezeigt), und die Funktion gibt Protokolle nur von Blobs zurück, für die der Zugriff zulässig ist.

Beispiele

  • SQL Server

    Dieses Beispiel liest aus einer Datei namens \\serverName\Audit\HIPAA_AUDIT.sqlaudit.

    SELECT * FROM sys.fn_get_audit_file ('\\serverName\Audit\HIPAA_AUDIT.sqlaudit',default,default);  
    GO  
    
  • Azure SQL-Datenbank

    In diesem Beispiel wird aus einer Datei mit dem Namen ShiraServer/MayaDB/SqlDbAuditing_Audit/2017-07-14/10_45_22_173_1.xel gelesen:

    SELECT * FROM sys.fn_get_audit_file ('https://mystorage.blob.core.windows.net/sqldbauditlogs/ShiraServer/MayaDB/SqlDbAuditing_Audit/2017-07-14/10_45_22_173_1.xel',default,default);
    GO  
    

    In diesem Beispiel wird aus derselben Datei wie oben gelesen, jedoch mit zusätzlichen T-SQL-Klauseln (TOP-, ORDER BY- und WHERE-Klausel zum Filtern der von der Funktion zurückgegebenen Überwachungsdatensätze):

    SELECT TOP 10 * FROM sys.fn_get_audit_file ('https://mystorage.blob.core.windows.net/sqldbauditlogs/ShiraServer/MayaDB/SqlDbAuditing_Audit/2017-07-14/10_45_22_173_1.xel',default,default)
    WHERE server_principal_name = 'admin1'
    ORDER BY event_time
    GO
    

    In diesem Beispiel werden alle Überwachungsprotokolle von Servern gelesen, die mit Sh beginnen:

    SELECT * FROM sys.fn_get_audit_file ('https://mystorage.blob.core.windows.net/sqldbauditlogs/Sh',default,default);
    GO  
    

Ein vollständiges Beispiel für das Erstellen einer Überwachung finden Sie unter SQL Server Audit (Datenbank-Engine).

Informationen zum Einrichten der Azure SQL-Datenbank finden Sie unter Erste Schritte mit SQL-Datenbank Überwachung.

Weitere Informationen

CREATE SERVER AUDIT (Transact-SQL)
ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER AUDIT (Transact-SQL)
CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
sys.server_audits (Transact-SQL)
sys.server_file_audits (Transact-SQL)
sys.server_audit_specifications (Transact-SQL)
sys.server_audit_specification_details (Transact-SQL)
sys.database_audit_specifications (Transact-SQL)
sys.database_audit_specification_details (Transact-SQL)
sys.dm_server_audit_status (Transact-SQL)
sys.dm_audit_actions (Transact-SQL)
sys.dm_audit_class_type_map (Transact-SQL)
Erstellen einer Serverüberwachung und einer Serverüberwachungsspezifikation