sys.fn_get_audit_file_v2 (Transact-SQL)

Gäller för:Azure SQL DatabaseLager i Microsoft FabricSQL-databas i Microsoft Fabric

Systemfunktionen sys.fn_get_audit_file_v2 är utformad för att hämta revisionsloggdata med ökad effektivitet jämfört med sin föregångare, sys.fn_get_audit_file. Funktionen introducerar tidsbaserad filtrering både på fil- och postnivå, vilket ger betydande prestandaförbättringar, särskilt för frågor som riktar sig mot specifika tidsintervall.

Returnerar information från en revisionsfil skapad av en serverrevision. Mer information finns i SQL Server-granskning (databasmotor).

Transact-SQL syntaxkonventioner

Syntax

fn_get_audit_file_v2 ( file_pattern
    , { default | initial_file_name | NULL }
    , { default | audit_record_offset | NULL }
    , { default | start time | NULL }
    , { default | end time | NULL } )

Arguments

file_pattern

Gäller för: Azure SQL Database only

Specificerar katalog eller sökväg och filnamn för revisionsfiluppsättningen som ska läsas. file_pattern är nvarchar(260).

Att skicka en sökväg utan filnamnsmönster genererar ett fel.

Detta argument används för att specificera en blob-URL (inklusive lagringsändpunkt och container). Även om det inte stöder en asterisk-wildcard, kan du använda ett partiellt filnamnsprefix (istället för hela blob-namnet) för att samla flera filer (blobs) som börjar med detta prefix. Till exempel:

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/ - samlar in alla revisionsfiler (blobs) för den specifika databasen.

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/<AuditName>/<CreationDate>/<FileName>.xel - samlar in en specifik revisionsfil (blob).

initial_file_name

Gäller för: Azure SQL Database only

Specificerar vägen och namnet på en specifik fil i revisionsfiluppsättningen för att börja läsa revisionsposter från. initial_file_name är nvarchar(260).

Argumentet initial_file_name måste innehålla giltiga poster eller innehålla default antingen värdet ellerNULL.

audit_record_offset

Gäller för: Azure SQL Database only

Anger en känd plats med filen som anges för initial_file_name. När detta argument används börjar funktionen läsa vid den första posten i bufferten direkt efter den specificerade offseten.

Argumentet audit_record_offset måste innehålla giltiga poster eller antingen innehålla default värdet ellerNULL. audit_record_offset är bigint.

start_time

Starttiden för filtrering av loggarna. Register före denna tid är undantagna.

end_time

Sluttiden för att filtrera loggarna. Register efter denna tid utesluts.

Tabellen returneras

Följande tabell beskriver innehållet i revisionsfilen som returneras av denna funktion.

Kolumnnamn Typ Description
event_time datetime2 Datum och tid när den granskningsbara åtgärden utlöses. Inte nullbar.
sequence_number int Spårar sekvensen med poster i en enskild granskningspost som var för stor för att få plats i skrivbufferten för granskningar. Inte nullbar.
action_id varchar(4) ID av handlingen. Inte nullbar.
succeeded bit Anger om åtgärden som utlöste händelsen lyckades. Inte nullbar. För alla andra händelser än inloggningshändelser rapporterar detta endast om behörighetskontrollen lyckades eller misslyckades, inte åtgärden.

1 = lyckad
0 = misslyckas
permission_bitmask varbinary(16) I vissa åtgärder är denna bitmask de behörigheter som beviljades, nekades eller återkallades.
is_column_permission bit Flagga som anger om detta är en behörighet på kolumnnivå. Inte nullbar. Återkommer 0 när .permission_bitmask = 0

1 = sant
0 = falskt
session_id smallint ID för sessionen där händelsen inträffade. Inte nullbar.
server_principal_id int ID för inloggningskontexten som åtgärden utförs i. Inte nullbar.
database_principal_id int ID för databasanvändarkontexten som åtgärden utförs i. Inte nullbar. Returnerar 0 om detta inte gäller. Till exempel en serveråtgärd.
target_server_principal_id int Serverprincipen som operationen GRANT/DENY/REVOKE utförs på. Inte nullbar. Returer 0 om det inte är tillämpligt.
target_database_principal_id int Databasprincipen GRANT/DENY/REVOKE som operationen utförs på. Inte nullbar. Returer 0 om det inte är tillämpligt.
object_id int ID:t för den enhet som revisionen genomfördes, vilket inkluderar följande objekt:

- Serverobjekt
-Databaser
- Databasobjekt
- Schemaobjekt

Inte nullbar. Returnerar 0 om entiteten är själva servern eller om revisionen inte utförs på objektnivå. Till exempel Autentisering.
class_type varchar(2) Den typ av granskningsbar entitet som granskningen sker på. Inte nullbar.
session_server_principal_name sysname Serverprincip för session. Nullable. Returnerar identiteten på den ursprungliga inloggningen som var ansluten till instansen av databasmotorn om det fanns explicita eller implicita kontextbyten.
server_principal_name sysname Aktuell inloggning. Nullable.
server_principal_sid varbinary Aktuellt inloggnings-SID. Nullable.
database_principal_name sysname Aktuell användare. Nullable. Returnerar NULL om det inte finns tillgängligt.
target_server_principal_name sysname Målinloggning för åtgärd. Nullable. Returer NULL om det inte är tillämpligt.
target_server_principal_sid varbinary SID för målinloggning. Nullable. Returer NULL om det inte är tillämpligt.
target_database_principal_name sysname Måla användaren av handlingen. Nullable. Returer NULL om det inte är tillämpligt.
server_instance_name sysname Namnet på den serverinstans där granskningen inträffade. Standardformatet server\instance används.
database_name sysname Databaskontexten där åtgärden inträffade. Nullable. Rapporter NULL för revisioner som sker på servernivå.
schema_name sysname Schemakontexten där åtgärden inträffade. Nullable. Rapporter NULL för revisioner som sker utanför ett schema.
object_name sysname Namnet på den enhet som revisionen genomfördes, vilket inkluderar följande objekt:

- Serverobjekt
-Databaser
- Databasobjekt
- Schemaobjekt

Nullable. Returnerar NULL om entiteten är själva servern eller om revisionen inte utförs på objektnivå. Till exempel Autentisering.
statement nvarchar(4000) Transact-SQL uttalande om det finns. Nullable. Returer NULL om det inte är tillämpligt.
additional_information nvarchar(4000) Unik information som endast gäller för en enskild händelse returneras som XML. Några granskningsbara åtgärder innehåller den här typen av information.

En nivå av T-SQL-stacken visas i XML-format för åtgärder som har T-SQL-stack kopplad till sig. XML-formatet är: <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

frame nest_level anger den aktuella inbäddningsnivån för ramen. Modulnamnet representeras i tredelat format (database_name, schema_name, och object_name). Modulnamnet tolkas för att undvika ogiltiga XML-tecken som <, >, /, . _x De har rymt som _xHHHH_. Står HHHH för den fyrsiffriga hexadecimala UCS-2-koden för tecknet. Nullable. Återkommer NULL när det inte rapporteras ytterligare information från händelsen.
file_name varchar(260) Sökvägen och namnet på granskningsloggfilen som posten kom från. Inte nullbar.
audit_file_offset bigint Buffertförskjutningen i filen som innehåller granskningsposten. Inte nullbar.
user_defined_event_id smallint Användardefinierad händelse-ID passades som ett argument till sp_audit_write. NULL för systemhändelser (standard) och icke-noll för användardefinierade händelser. Mer information finns i sp_audit_write (Transact-SQL).
user_defined_information nvarchar(4000) Används för att registrera eventuell extra information som användaren vill registrera i granskningsloggen med hjälp av den sp_audit_write lagrade proceduren.
audit_schema_version int Alltid 1.
sequence_group_id varbinary Unik identifierare.<
transaction_id bigint Unik identifierare för att identifiera flera revisionshändelser i en och samma transaktion.
client_ip nvarchar(128) Käll-IP för klientapplikationen.
application_name nvarchar(128) Namnet på klientapplikationen som utförde uttalandet som orsakade revisionshändelsen.
duration_milliseconds bigint Frågeexekveringstiden är i millisekunder.
response_rows bigint Antal rader returnerades i resultatuppsättningen.<
affected_rows bigint Antal rader påverkas av det utförda uttalandet.
connection_id uniqueidentifier ID för anslutningen i servern.
data_sensitivity_information nvarchar(4000) Informationstyper och känslighetsetiketter som returneras av den granskade frågan, baserat på de klassificerade kolumnerna i databasen. Lär dig mer om Azure SQL Database dataupptäckt och klassificering.
host_name nvarchar(128) Värdnamnet på klientmaskinen.
session_context nvarchar(4000) De nyckel-värde-par som är en del av den aktuella sessionskontexten.
client_tls_version bigint Minsta TLS-version som stöds av klienten.
client_tls_version_name nvarchar(128) Minsta TLS-version som stöds av klienten.
database_transaction_id bigint Transaktions-ID för den aktuella transaktionen i den aktuella sessionen.
ledger_start_sequence_number bigint Sekvensnumret för en operation inom en transaktion som skapade en radversion.
external_policy_permissions_checked nvarchar(4000) Information relaterad till den externa auktorisationskontrollen, när en revisionshändelse genereras, och Purviews externa auktorisationspolicys utvärderas.
obo_middle_tier_app_id Varchar(120) Applikations-ID:t för den mellannivåapplikation som ansluter med hjälp av on-because-of (OBO)-åtkomst. Nullable. Returneras NULL om begäran inte görs med OBO-åtkomst.
is_local_secondary_replica bit True Om revisionsposten kommer från en skrivskyddad lokal sekundär replika, False annars.

Förbättringar jämfört med sys.fn_get_audit_file

Funktionen sys.fn_get_audit_file_v2 erbjuder en betydande förbättring jämfört med den äldre sys.fn_get_audit_file genom att införa effektiv tidsbaserad filtrering på både fil- och postnivå. Denna optimering är särskilt fördelaktig för frågor som riktar sig mot mindre tidsintervall och kan hjälpa till att bibehålla prestandan i miljöer med flera databaser.

Dubbelnivåfiltrering

Filnivåfiltrering: Funktionen filtrerar först filerna baserat på det angivna tidsintervallet, vilket minskar antalet filer som behöver skannas.

Postnivåfiltrering: Den tillämpar sedan filtrering inom de valda filerna för att endast extrahera relevanta poster.

Prestandaförbättringar

Prestandaförbättringarna beror främst på överföringstiden för blobfilerna och det frågeställda tidsintervallet. Under antagandet av en enhetlig fördelning av revisionsdokument:

  • Minskad belastning: Genom att minimera antalet filer och poster att skanna minskar belastningen på systemet och svarstiderna för frågor förbättras.

  • Skalbarhet: Hjälper till att bibehålla prestandan även när antalet databaser ökar, även om nettoförbättringen kan vara mindre uttalad i miljöer med många databaser.

Anmärkningar

Om det file_pattern argumentet som skickas till fn_get_audit_file_v2 refererar till en sökväg eller fil som inte finns, eller om filen inte är en revisionsfil, returneras felmeddelandet MSG_INVALID_AUDIT_FILE .

Funktionen fn_get_audit_file_v2 kan inte användas när revisionen skapas med APPLICATION_LOG, SECURITY_LOG, eller EXTERNAL_MONITOR alternativen.

Just nu i Fabric Data Warehouse kan du inte komma åt enskilda filer, bara revisionsmappen. Följande argument stöds inte för SQL Audit på ett lagerobjekt: file_pattern, initial_file_name, audit_record_offset.

Permissions

Behörigheter som krävs i Azure SQL Database

Kräver behörigheten CONTROL DATABASE .

  • Serveradministratörer kan komma åt revisionsloggar för alla databaser på servern.

  • Icke-serveradministratörer kan bara komma åt revisionsloggar från den aktuella databasen.

  • Blobs som inte uppfyller ovanstående kriterier hoppas över (en lista över hoppade blobs visas i frågeutdatameddelandet). Funktionen returnerar loggar endast från blobs för vilka åtkomst är tillåten.

Behörigheter som krävs i Fabric SQL-databasen

För att hantera granskning med Fabric-workspace-roller måste användare ha medlemskap i Fabric workspace Contributor-rollen eller högre behörigheter. Så här hanterar du granskning med SQL-behörigheter:

  • För att konfigurera databaskontroll behöver användarna ha behörigheten ÄNDRA ALLA DATABASAUDITS.
  • Om du vill visa granskningsloggar med hjälp av T-SQL måste användarna ha behörigheten VIEW DATABASE SECURITY AUDIT.

För mer information, se Revision i Fabric SQL-databas.

Behörigheter som krävs i Fabric Data Warehouse

Användare måste ha behörighet för Fabric-objektet Audit . Mer information finns i Behörigheter.

Examples

A. View SQL audit logs for Azure SQL Database

Detta exempel hämtar revisionsloggar från en specifik Azure Blob Storage-plats och filtrerar poster mellan 2023-11-17T08:40:40Z och 2023-11-17T09:10:40Z.

SELECT *
FROM sys.fn_get_audit_file_v2(
    'https://<storage_account>.blob.core.windows.net/sqldbauditlogs/server_name/database_name/SqlDbAuditing_ServerAudit/',
    DEFAULT,
    DEFAULT,
    '2023-11-17T08:40:40Z',
    '2023-11-17T09:10:40Z')

B. Visa SQL-revisionsloggar för Fabric Data Warehouse

Detta exempel hämtar revisionsloggar från OneLake-mappen som är justerade med det aktuella arbetsområdet och lagret, och filtrerar poster mellan 2023-11-17T08:40:40Z och 2023-11-17T09:10:40Z.

I Fabric-portalen, hämta din workspaceID och warehouseID:

  • <workspaceID>: Besök din arbetsplats i Fabric-portalen. Hitta arbetsytans GUID i URL:en efter avsnittet /groups/ , eller genom att köra SELECT @@SERVERNAME i ett befintligt lager. Om din /groups/ URL följs av /me/, använder du standardarbetsytan, och för närvarande stöds inte SQL Audit for Fabric Data Warehouse i standardarbetsytan.
  • <warehouseID>: Besök ditt lager i Fabric-portalen. Hitta lager-ID:t i URL:en efter avsnittet /warehouses/ .
SELECT *
FROM sys. fn_get_audit_file_v2(
    'https://onelake.blob.fabric.microsoft.com/{workspaceId}/{warehouseId}/Audit/sqldbauditlogs/',
    DEFAULT,
    DEFAULT,
    '2023-11-17T08:40:40Z',
    '2023-11-17T09:10:40Z')

C. Visa SQL-revisionsloggar för SQL-databasen i Microsoft Fabric

Detta exempel hämtar revisionsloggar från OneLake i Microsoft Fabric, mellan 2025-11-17T08:40:40Z och 2025-11-17T09:10:40Z.

I följande skript behöver du ange ditt Microsoft Fabric-arbetsområdes-ID och databas-ID. Båda kan hittas i URL:en från Fabric-portalen. Till exempel: https://fabric.microsoft.com/groups/<fabric workspace id>/sqldatabases/<fabric sql database id>. Den första unika identifieringssträngen i URL:en är Fabric workspace ID, och den andra unika identifieringssträngen är SQL-databasens ID.

  • Ersätt <fabric_workspace_id> med ditt Fabric arbetsyte-ID. Du hittar enkelt ID:t för en arbetsyta i URL:en, det är den unika strängen inuti två / tecken efter /groups/ i webbläsarfönstret.
  • Ersätt <fabric sql database id> med din SQL-databas i Fabric-databas-ID. Du hittar enkelt ID:t för databasobjektet i URL:en, det är den unika strängen inuti två / tecken efter /sqldatabases/ i webbläsarfönstret.
SELECT *
FROM sys.fn_get_audit_file_v2(
    'https://onelake.blob.fabric.microsoft.com/<fabric workspace id>/<fabric sql database id>/Audit/sqldbauditlogs/',
    DEFAULT,
    DEFAULT,
    '2025-11-17T08:40:40Z',
    '2025-11-17T09:10:40Z')

Mer information

Systemkatalogvyer:

Transact-SQL: