sys.fn_get_audit_file (Transact-SQL)

Gilt für:yes SQL Server (alle unterstützten Versionen) YesAzure SQL-Datenbank YesAzure SQL Managed Instance yesAzure Synapse Analytics

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

Topic link iconTransact-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 ist nvarchar(260).

  • SQL Server:

    Dieses Argument muss sowohl einen Pfad (Laufwerksbuchstabe oder Netzwerkfreigabe) als auch einen Dateinamen umfassen. Diese können ein Platzhalterzeichen enthalten. Mit einem einzelnen Sternchen (*) können mehrere Dateien von einem Überwachungsdateisatz gesammelt werden. Beispiel:

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

    • <path>\LoginsAudit_{GUID}* – Sammeln Sie alle Überwachungsdateien, die über den angegebenen Namen und das GUID-Paar verfügen.

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

  • Azure SQL-Datenbank:

    Dieses Argument wird verwendet, um eine Blob-URL anzugeben (einschließlich des Speicherendpunkts und des Containers). Während es keine Sternchen-Wildcard unterstützt, können Sie ein Teildateinamenpräfix (anstelle des vollständigen Blobnamens) verwenden, um mehrere Dateien (Blobs) zu sammeln, die mit diesem Präfix beginnen. Beispiel:

    • <>Storage_endpoint/Container>/<ServerName/<<DatabaseName>>/ – sammelt alle Überwachungsdateien (Blobs) für die bestimmte Datenbank.

    • <>Storage_endpoint/<Container></ServerName<>/DatabaseName>></AuditName/<CreationDate>/<FileName.xel> – sammelt 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 ist nvarchar(260).

Hinweis

Das argument initial_file_name muss gültige Einträge enthalten oder entweder die Standard-| enthalten. 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 argument audit_record_offset muss gültige Einträge enthalten oder entweder die Standard- | enthalten. NULL-Wert. Der Typ ist groß.

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 '\<', , , '/''>''_x'. Sie werden als _xHHHH\_entwischen. 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 nur für: Azure SQL-Datenbank

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 ausführt, die das Überwachungsereignis verursacht hat
audit_file_offset bigint Gilt nur für: SQL Server

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 Managed Instance

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

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 Überprüfungen auf Serverebene zurück.
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 Managed Instance

Ausführungsdauer der Abfrage in Millisekunden
event_time datetime2 Datum und Uhrzeit, zu dem die auditierbare 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 Managed Instance

Die Anzahl der zeilen, die im Resultset zurückgegeben werden.
schema_name sysname Schemakontext, in dem die Aktion durchgeführt wurde Lässt NULL-Werte zu. Gibt NULL für Audits zurück, die außerhalb eines Schemas auftreten.
sequence_group_id varbinary Gilt nur für: 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 der ursprünglichen Anmeldung zurück, die mit der Instanz von SQL Server verbunden war, falls explizite oder implizite Kontextschalter vorhanden waren.
statement nvarchar(4000) TSQL-Anweisung, falls vorhanden. Lässt NULL-Werte zu. Falls nicht zutreffend, wird NULL zurückgegeben.
succeeded 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 nur für: 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 Managed Instance

Benutzerdefinierte Ereignis-ID, die als Argument an sp_audit_write übergeben wird. 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 Managed Instance

Wird verwendet, um zusätzliche Informationen aufzuzeichnen, die der Benutzer im Überwachungsprotokoll aufzeichnen möchte, indem er die gespeicherte sp_audit_write Prozedur verwendet.

Hinweise

  • Wenn das anfn_get_audit_file übergebene file_pattern Argument auf einen Pfad oder eine Datei verweist, die nicht vorhanden ist, oder wenn die Datei keine Überwachungsdatei ist, wird die MSG_INVALID_AUDIT_FILE Fehlermeldung zurückgegeben.
  • fn_get_audit_file können nicht verwendet werden, wenn die Überwachung mit den Optionen APPLICATION_LOG, SECURITY_LOG oder EXTERNAL_MONITOR erstellt wird.

Berechtigungen

  • SQL Server: Erfordert die CONTROL SERVER-Berechtigung.
  • Azure SQL-Datenbank: Erfordert die BERECHTIGUNG CONTROL DATABASE.
    • Serveradministratoren können auf Überwachungsprotokolle aller Datenbanken auf dem Server zugreifen.
    • Nicht Serveradministratoren können nur auf Überwachungsprotokolle aus der aktuellen Datenbank zugreifen.
    • Blobs, die die obigen 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 eine Datei mit dem Namen :ShiraServer/MayaDB/SqlDbAuditing_Audit/2017-07-14/10_45_22_173_1.xel

    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  
    

    Dieses Beispiel liest aus derselben Datei wie oben, aber 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:

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

Ein vollständiges Beispiel zum Erstellen einer Überwachung finden Sie unter SQL Server Überwachung (Datenbank-Engine).

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

Weitere Informationen

CREATE SERVER AUDIT (Transact-SQL)
ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER-ÜBERWACHUNG (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