sys.fn_get_audit_file (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure 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).
Hinweis
Für Azure SQL-Datenbank sollten Sie stattdessen sys.fn_get_audit_file_v2 verwenden. sys.fn_get_audit_file_v2
führt die zeitbasierte Filterung auf Datei- und Datensatzebene ein und bietet erhebliche Leistungsverbesserungen, insbesondere für Abfragen, die auf bestimmte Zeitbereiche ausgerichtet sind.
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 ist nvarchar(260).
Durch Übergeben eines Pfads ohne Dateinamenmuster wird ein Fehler generiert.
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 sammeln. Zum Beispiel:
\<path>\*
- Sammeln Sie alle Überwachungsdateien am angegebenen Speicherort.<path>\LoginsAudit_{GUID}*
– Sammeln Sie alle Überwachungsdateien, die den angegebenen Namen und das GUID-Paar aufweisen.<path>\LoginsAudit_{GUID}_00_29384.sqlaudit
- Sammeln Sie eine bestimmte Überwachungsdatei.
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).
Das argument initial_file_name muss gültige Einträge enthalten oder entweder den Wert oder NULL
den default
Wert enthalten.
audit_record_offset
Gibt einen bekannten Speicherort mit der für die initial_file_name angegebenen Datei an. Wenn dieses Argument verwendet wird, beginnt die Funktion mit dem Lesen am ersten Datensatz des Puffers unmittelbar nach dem angegebenen Offset.
Das Argument audit_record_offset muss gültige Einträge enthalten oder entweder den Wert oder NULL
den default
Wert enthalten. Typ ist großint.
Zurückgegebene Tabellen
In der folgenden Tabelle wird der Inhalt der Überwachungsdatei beschrieben, die von dieser Funktion zurückgegeben werden kann.
Spaltenname | type | Beschreibung |
---|---|---|
event_time |
datetime2 | Datum und Uhrzeit, zu dem die überprüfbare Aktion ausgelöst wird. Lässt keine NULL-Werte zu. |
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. |
action_id |
varchar(4) | ID der Aktion. Lässt keine NULL-Werte zu. |
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 = Erfolg0 = fehler |
permission_bitmask |
varbinary(16) | In einigen Aktionen ist diese Bitmaske die Berechtigungen, die erteilt, verweigert oder widerrufen wurden. |
is_column_permission |
bit | Flag, das angibt, ob die Berechtigung auf Benutzerebene erteilt wurde Lässt keine NULL-Werte zu. Gibt zurück0 , wenn das = permission_bitmask 0 .1 = True0 = false |
session_id |
smallint | Die ID der Sitzung, in der das Ereignis aufgetreten ist. Lässt keine NULL-Werte zu. |
server_principal_id |
int | ID des Anmeldekontexts, in dem die Aktion ausgeführt wird. Lässt keine NULL-Werte zu. |
database_principal_id |
int | ID des Datenbankbenutzerkontexts, in dem die Aktion ausgeführt wird. Lässt keine NULL-Werte zu. Gibt zurück 0 , wenn dies nicht zutrifft. Zum Beispiel bei einem Servervorgang. |
target_server_principal_id |
int | Serverprinzipal, für den der GRANT //DENY REVOKE Vorgang ausgeführt wird. Lässt keine NULL-Werte zu. Gibt zurück 0 , falls nicht zutreffend. |
target_database_principal_id |
int | Der Datenbankprinzipal, für den der GRANT //DENY REVOKE Vorgang ausgeführt wird. Lässt keine NULL-Werte zu. Gibt zurück 0 , falls nicht zutreffend. |
object_id |
int | Die ID der Entität, für die die Überwachung aufgetreten ist, einschließlich der folgenden Objekte: - Serverobjekte -Datenbanken - Datenbankobjekte - Schemaobjekte Lässt keine NULL-Werte zu. Gibt zurück 0 , ob es sich bei der Entität um den Server selbst handelt oder wenn die Überwachung nicht auf Objektebene ausgeführt wird. Zum Beispiel bei der Authentifizierung. |
class_type |
varchar(2) | Der Typ der überwachbaren Entität, bei der die Überwachung auftritt. Lässt keine NULL-Werte zu. |
session_server_principal_name |
sysname | Serverprinzipal für Sitzung. NULL-Werte sind zulässig. Gibt die Identität der ursprünglichen Anmeldung zurück, die mit der Instanz des Datenbank-Engine verbunden war, falls explizite oder implizite Kontextoptionen vorhanden waren. |
server_principal_name |
sysname | Aktuelle Anmeldung. NULL-Werte sind zulässig. |
server_principal_sid |
varbinary | Aktueller Anmeldesicherheitsbezeichner (SID). NULL-Werte sind zulässig. |
database_principal_name |
sysname | Aktueller Benutzer. NULL-Werte sind zulässig. Gibt zurück NULL , wenn sie nicht verfügbar ist. |
target_server_principal_name |
sysname | Zielanmeldung der Aktion NULL-Werte sind zulässig. Gibt zurück NULL , falls nicht zutreffend. |
target_server_principal_sid |
varbinary | SID der Zielanmeldung NULL-Werte sind zulässig. Gibt zurück NULL , falls nicht zutreffend. |
target_database_principal_name |
sysname | Zielbenutzer der Aktion NULL-Werte sind zulässig. Gibt zurück NULL , falls nicht zutreffend. |
server_instance_name |
sysname | Der Name der Serverinstanz, in der die Überwachung aufgetreten ist. Das Standardformat server\instance wird verwendet. |
database_name |
sysname | Der Datenbankkontext, in dem die Aktion aufgetreten ist. NULL-Werte sind zulässig. Gibt NULL für Audits auf Serverebene zurück. |
schema_name |
sysname | Schemakontext, in dem die Aktion durchgeführt wurde NULL-Werte sind zulässig. Gibt NULL für Audits außerhalb eines Schemas zurück. |
object_name |
sysname | Der Name der Entität, für die die Überwachung aufgetreten ist, einschließlich der folgenden Objekte: - Serverobjekte -Datenbanken - Datenbankobjekte - Schemaobjekte NULL-Werte sind zulässig. Gibt zurück NULL , ob es sich bei der Entität um den Server selbst handelt oder wenn die Überwachung nicht auf Objektebene ausgeführt wird. Zum Beispiel bei der Authentifizierung. |
statement |
nvarchar(4000) | Transact-SQL-Anweisung, falls vorhanden. NULL-Werte sind zulässig. Gibt zurück NULL , falls nicht zutreffend. |
additional_information |
nvarchar(4000) | 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 T-SQL-Stapels wird im XML-Format für Aktionen angezeigt, denen der T-SQL-Stapel zugeordnet ist. Das XML-Format lautet: <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 analysiert, um ungültige XML-Zeichen wie < , > , , / . _x Sie werden als _xHHHH_ . Das HHHH steht für den vierstelligen hexadezimalen UCS-2-Code für das Zeichen. NULL-Werte sind zulässig. Gibt zurück NULL , wenn keine zusätzlichen Informationen vom Ereignis gemeldet werden. |
file_name |
varchar(260) | Der Pfad und der Name der Überwachungsprotokolldatei, aus der der Datensatz stammt. Lässt keine NULL-Werte zu. |
audit_file_offset |
bigint | Der Pufferoffset in der Datei, die den Überwachungsdatensatz enthält. Lässt keine NULL-Werte zu. Gilt nur für: NUR SQL Server |
user_defined_event_id |
smallint | Benutzerdefinierte Ereignis-ID, die als Argument übergeben wird sp_audit_write . NULL für Systemereignisse (Standard) und ungleich Null für benutzerdefinierte Ereignisse. Weitere Informationen finden Sie unter sp_audit_write.Gilt für: SQL Server 2012 (11.x) und höhere Versionen, Azure SQL-Datenbank und SQL-verwaltete Instanz |
user_defined_information |
nvarchar(4000) | Wird verwendet, um zusätzliche Informationen aufzuzeichnen, die der Benutzer mithilfe der sp_audit_write gespeicherten Prozedur im Überwachungsprotokoll aufzeichnen möchte.Gilt für: SQL Server 2012 (11.x) und höhere Versionen, Azure SQL-Datenbank und SQL-verwaltete Instanz |
audit_schema_version |
int | Immer 1 . |
sequence_group_id |
varbinary | Eindeutiger -Bezeichner. Gilt für: SQL Server 2016 (13.x) und höhere Versionen |
transaction_id |
bigint | Eindeutiger Bezeichner zum Identifizieren mehrerer Überwachungsereignisse in einer Transaktion. Gilt für: SQL Server 2016 (13.x) und höhere Versionen |
client_ip |
nvarchar(128) | Quell-IP der Clientanwendung. Gilt für: SQL Server 2017 (14.x) und höhere Versionen sowie Azure SQL-Datenbank |
application_name |
nvarchar(128) | Name der Clientanwendung, die die Anweisung ausgeführt hat, die das Überwachungsereignis verursacht hat. Gilt für: SQL Server 2017 (14.x) und höhere Versionen sowie Azure SQL-Datenbank |
duration_milliseconds |
bigint | Dauer der Abfrageausführung in Millisekunden. Gilt für: Azure SQL-Datenbank und SQL-verwaltete Instanz |
response_rows |
bigint | Die Anzahl der zeilen, die im Resultset zurückgegeben wurden. Gilt für: Azure SQL-Datenbank und SQL-verwaltete Instanz |
affected_rows |
bigint | Die Anzahl der zeilen, die von der ausgeführten Anweisung betroffen sind. Gilt nur für: Azure SQL-Datenbank |
connection_id |
uniqueidentifier | ID der Verbindung auf dem Server. Gilt für: Azure SQL-Datenbank und SQL-verwaltete Instanz |
data_sensitivity_information |
nvarchar(4000) | Informationstypen und Vertraulichkeitsbezeichnungen, die von der überwachten Abfrage zurückgegeben werden (je nach klassifizierter Spalte in der Datenbank) Erfahren Sie mehr über Azure SQL-Datenbank Ermitteln und Klassifizieren von Daten. Gilt nur für: Azure SQL-Datenbank |
host_name |
nvarchar(128) | Hostname des Clientcomputers. |
session_context |
nvarchar(4000) | Die Schlüsselwertpaare, die Teil des aktuellen Sitzungskontexts sind. |
client_tls_version |
bigint | Vom Client unterstützte Mindest-TLS-Version. |
client_tls_version_name |
nvarchar(128) | Vom Client unterstützte Mindest-TLS-Version. |
database_transaction_id |
bigint | Transaktions-ID der aktuellen Transaktion in der aktuellen Sitzung. |
ledger_start_sequence_number |
bigint | Die Sequenznummer eines Vorgangs innerhalb einer Transaktion, mit der eine Zeilenversion erstellt wurde. Gilt nur für: Azure SQL-Datenbank |
external_policy_permissions_checked |
nvarchar(4000) | Informationen im Zusammenhang mit der Überprüfung der externen Autorisierungsberechtigung, wenn ein Überwachungsereignis generiert wird, und purview externe Autorisierungsrichtlinien werden ausgewertet. Gilt nur für: Azure SQL-Datenbank |
obo_middle_tier_app_id |
varchar(120) | Die Anwendungs-ID der mittleren Anwendung, die eine Verbindung mit Azure SQL-Datenbank mithilfe des Zugriffs im Auftrag von (OBO) herstellt. NULL-Werte sind zulässig. Gibt zurück NULL , wenn die Anforderung nicht über den OBO-Zugriff erfolgt.Gilt nur für: Azure SQL-Datenbank |
is_local_secondary_replica |
bit | True wenn der Überwachungsdatensatz aus einem schreibgeschützten lokalen sekundären Replikat stammt, False andernfalls.Gilt nur für: Azure SQL-Datenbank |
Hinweise
Wenn das argument file_pattern übergeben wurde, um auf einen Pfad oder eine Datei zu
fn_get_audit_file
verweisen, die nicht vorhanden ist, oder wenn die Datei keine Überwachungsdatei ist, wird dieMSG_INVALID_AUDIT_FILE
Fehlermeldung zurückgegeben.fn_get_audit_file
kann nicht verwendet werden, wenn die Überwachung mit denAPPLICATION_LOG
Optionen oder DenkoptionenEXTERNAL_MONITOR
SECURITY_LOG
erstellt wird.
Berechtigungen
SQL Server 2019 (15.x) und frühere Versionen erfordern CONTROL SERVER
berechtigungen auf dem Server.
SQL Server 2022 (16.x) und höhere Versionen erfordern VIEW SERVER SECURITY AUDIT
berechtigungen auf dem Server.
Beispiele
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
Ein vollständiges Beispiel für das Erstellen einer Überwachung finden Sie unter SQL Server Audit (Datenbank-Engine).
Begrenzungen
Das Auswählen von Zeilen aus sys.fn_get_audit_file
einer Create Table As Select (CTAS) oder INSERT INTO
eine Einschränkung bei der Ausführung in Azure Synapse Analytics. Obwohl die Abfrage erfolgreich abgeschlossen ist und keine Fehlermeldungen angezeigt werden, sind in der Tabelle keine Zeilen vorhanden, die mit CTAS oder INSERT INTO
.
Weitere Informationen
Systemkatalogansichten:
- 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)
Transact-SQL:
- 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)