Delen via


sys.fn_get_audit_file_v2 (Transact-SQL)

Van toepassing op:Azure SQL DatabaseMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

De sys.fn_get_audit_file_v2 systeemfunctie is ontworpen om auditloggegevens op te halen met een hogere efficiëntie ten opzichte van zijn voorganger, sys.fn_get_audit_file. De functie introduceert tijdgebaseerde filtering op zowel bestands- als recordniveau, wat aanzienlijke prestatieverbeteringen oplevert, vooral voor zoekopdrachten die zich richten op specifieke tijdbereiken.

Geeft informatie terug uit een auditbestand dat is aangemaakt door een serveraudit. Zie SQL Server Audit (Database Engine)voor meer informatie.

Transact-SQL syntaxis-conventies

Syntaxis

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

Van toepassing op: Azure SQL Database only

Specificeert de map of het pad en de bestandsnaam voor de auditbestandset die gelezen moet worden. file_pattern is nvarchar(260).

Het doorgeven van een pad zonder bestandsnaampatroon genereert een fout.

Dit argument wordt gebruikt om een blob-URL te specificeren (inclusief het opslag-eindpunt en de container). Hoewel het geen asterisk wildcard ondersteunt, kun je een gedeeltelijke bestandsnaamvoorvoegsel (blob) gebruiken (in plaats van de volledige blobnaam) om meerdere bestanden (blobs) te verzamelen die met dit voorvoegsel beginnen. Voorbeeld:

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/ - verzamelt alle auditbestanden (blobs) voor de specifieke database.

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/<AuditName>/<CreationDate>/<FileName>.xel - verzamelt een specifiek auditbestand (blob).

initial_file_name

Van toepassing op: Azure SQL Database only

Specificeert het pad en de naam van een specifiek bestand in de auditbestandsset waaruit auditrecords moeten worden gelezen. initial_file_name is nvarchar(260).

Het argument initial_file_name moet geldige elementen bevatten of ofwel de defaultNULL of-waarde bevatten.

audit_record_offset

Van toepassing op: Azure SQL Database only

Geeft een bekende locatie aan met het bestand dat voor de initial_file_name is opgegeven. Wanneer dit argument wordt gebruikt, begint de functie direct na de gespecificeerde offset te lezen bij het eerste record van de buffer.

Het argument audit_record_offset moet geldige elementen bevatten of ofwel de defaultNULL of-waarde bevatten. audit_record_offset is bigint.

start_time

De starttijd voor het filteren van de logs. Records van vóór deze periode zijn uitgesloten.

end_time

De eindtijd voor het filteren van de logs. Records na deze periode worden uitgesloten.

Tabel geretourneerd

De volgende tabel beschrijft de inhoud van het auditbestand dat door deze functie wordt geretourneerd.

Kolomnaam Typologie Description
event_time datetime2 Datum en tijd waarop de controleerbare actie wordt geactiveerd. Niet nullwaarde.
sequence_number int Houdt de reeks records in één controlerecord bij die te groot was om in de schrijfbuffer voor controles te passen. Niet nullwaarde.
action_id varchar(4) ID van de actie. Niet nullwaarde.
succeeded bit Geeft aan of de actie die de gebeurtenis heeft geactiveerd, is geslaagd. Niet nullwaarde. Voor alle andere gebeurtenissen dan aanmeldingsgebeurtenissen wordt alleen gerapporteerd of de machtigingscontrole is geslaagd of mislukt, niet de bewerking.

1 = succes
0 = mislukt
permission_bitmask varbinary(16) In sommige acties zijn deze bitmaskers de rechten die zijn verleend, geweigerd of ingetrokken.
is_column_permission bit Vlag die aangeeft of dit een machtiging op kolomniveau is. Niet nullwaarde. Komt terug 0 wanneer depermission_bitmask = 0 .

1 = waar
0 = onwaar
session_id smallint Id van de sessie waarop de gebeurtenis heeft plaatsgevonden. Niet nullwaarde.
server_principal_id int Id van de aanmeldingscontext waarin de actie wordt uitgevoerd. Niet nullwaarde.
database_principal_id int Id van de databasegebruikerscontext waarin de actie wordt uitgevoerd. Niet nullwaarde. Retourneringen 0 als dit niet van toepassing is. Bijvoorbeeld een serverbewerking.
target_server_principal_id int Serverprincipal waarop de GRANT/DENY/REVOKE bewerking wordt uitgevoerd. Niet nullwaarde. Retourneringen 0 als dat niet van toepassing is.
target_database_principal_id int De databaseprincipal waarop de GRANT/DENY/REVOKE bewerking wordt uitgevoerd. Niet nullwaarde. Retourneringen 0 als dat niet van toepassing is.
object_id int De ID van de entiteit waarop de audit heeft plaatsgevonden, waaronder de volgende objecten:

- Serverobjecten
-Databases
- Databaseobjecten
- Schema-objecten

Niet nullwaarde. Geeft terug 0 als de entiteit zelf de server is of als de audit niet op objectniveau wordt uitgevoerd. Bijvoorbeeld verificatie.
class_type varchar(2) Het type controleerbare entiteit waarop de controle plaatsvindt. Niet nullwaarde.
session_server_principal_name sysname Server principal voor sessie. Nullable. Geeft de identiteit terug van de oorspronkelijke login die verbonden was met de instantie van de Database Engine in het geval er expliciete of impliciete contextwisselingen waren.
server_principal_name sysname Huidige aanmelding. Nullable.
server_principal_sid varbinary Huidige aanmeldings-SID. Nullable.
database_principal_name sysname Huidige gebruiker. Nullable. Retourneren NULL als het niet beschikbaar is.
target_server_principal_name sysname Doelwit-inlog van actie. Nullable. Retourneringen NULL als dat niet van toepassing is.
target_server_principal_sid varbinary SID van doelwitlogin. Nullable. Retourneringen NULL als dat niet van toepassing is.
target_database_principal_name sysname Doelwit op de gebruiker van actie. Nullable. Retourneringen NULL als dat niet van toepassing is.
server_instance_name sysname Naam van het serverexemplaren waar de controle heeft plaatsgevonden. Het standaardformaat server\instance wordt gebruikt.
database_name sysname De databasecontext waarin de actie heeft plaatsgevonden. Nullable. Rapporten NULL voor audits die op serverniveau plaatsvinden.
schema_name sysname De schemacontext waarin de actie heeft plaatsgevonden. Nullable. Aangiften NULL voor audits die buiten een schema plaatsvinden.
object_name sysname De naam van de entiteit waarop de audit heeft plaatsgevonden, waaronder de volgende objecten:

- Serverobjecten
-Databases
- Databaseobjecten
- Schema-objecten

Nullable. Geeft terug NULL als de entiteit zelf de server is of als de audit niet op objectniveau wordt uitgevoerd. Bijvoorbeeld verificatie.
statement nvarchar(4000) Transact-SQL verklaring als die bestaat. Nullable. Retourneringen NULL als dat niet van toepassing is.
additional_information nvarchar(4000) Unieke informatie die alleen van toepassing is op één gebeurtenis, wordt geretourneerd als XML. Een paar controlebare acties bevatten dit soort informatie.

Eén niveau van de T-SQL-stack wordt weergegeven in XML-formaat voor acties die een T-SQL-stack hebben gekoppeld. Het XML-formaat is: <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

frame nest_level geeft het huidige nestniveau van het frame aan. De naam van de module wordt weergegeven in een driedelige vorm (database_name, schema_name, en object_name). De modulenaam wordt geparseerd om ongeldige XML-tekens zoals <, >, /, , _xte vermijden. Ze zijn ontsnapt als _xHHHH_. De staat HHHH voor de viercijferige hexadecimale UCS-2-code voor het teken. Nullable. Komt terug NULL wanneer er geen aanvullende informatie door het evenement wordt gemeld.
file_name varchar(260) Het pad en de naam van het auditlogboekbestand waaruit de record afkomstig is. Niet nullwaarde.
audit_file_offset bigint De bufferverschil in het bestand dat de controlerecord bevat. Niet nullwaarde.
user_defined_event_id smallint Door de gebruiker gedefinieerde event ID werd als argument doorgegeven aan sp_audit_write. NULL voor systeemgebeurtenissen (standaard) en niet-nul voor door de gebruiker gedefinieerde gebeurtenis. Zie sp_audit_write (Transact-SQL) voor meer informatie.
user_defined_information nvarchar(4000) Wordt gebruikt om extra informatie vast te leggen die de gebruiker wil opnemen in het auditlogboek met behulp van de sp_audit_write opgeslagen procedure.
audit_schema_version int Altijd 1.
sequence_group_id varbinary Unieke identificatie.<
transaction_id bigint Unieke identificatie om meerdere auditgebeurtenissen in één transactie te identificeren.
client_ip nvarchar(128) Bron-IP van de clientapplicatie.
application_name nvarchar(128) Naam van de clientapplicatie die de verklaring uitvoerde die het auditevent veroorzaakte.
duration_milliseconds bigint Query-uitvoeringsduur in milliseconden.
response_rows bigint Aantal rijen werd teruggegeven in de resultaatset.<
affected_rows bigint Aantal rijen dat door de uitgevoerde verklaring wordt beïnvloed.
connection_id uniqueidentifier ID van de verbinding in de server.
data_sensitivity_information nvarchar(4000) Informatietypen en vertrouwelijkheidslabels die worden geretourneerd door de gecontroleerde query, op basis van de geclassificeerde kolommen in de database. Lees meer over Azure SQL Database data discover and classification.
host_name nvarchar(128) Hostnaam van de clientmachine.
session_context nvarchar(4000) De sleutel-waardeparen die deel uitmaken van de huidige sessiecontext.
client_tls_version bigint Minimale TLS-versie die door de client wordt ondersteund.
client_tls_version_name nvarchar(128) Minimale TLS-versie die door de client wordt ondersteund.
database_transaction_id bigint Transactie-ID van de huidige transactie in de huidige sessie.
ledger_start_sequence_number bigint Het volgnummer van een bewerking binnen een transactie die een rijversie creëerde.
external_policy_permissions_checked nvarchar(4000) Informatie met betrekking tot de controle van externe autorisatiemachtigingen, wanneer een auditgebeurtenis wordt gegenereerd, en Purview externe autorisatiebeleid worden geëvalueerd.
obo_middle_tier_app_id Varchar(120) De applicatie-ID van de middle tier applicatie die verbinding maakt via on-behalf-of (OBO) toegang. Nullable. Komt terug NULL als het verzoek niet via OBO-toegang wordt gedaan.
is_local_secondary_replica bit True als het auditrecord afkomstig is van een alleen-leesbare lokale secundaire replica, False anders.

Verbeteringen ten opzichte van sys.fn_get_audit_file

De sys.fn_get_audit_file_v2 functie biedt een aanzienlijke verbetering ten opzichte van de oudere sys.fn_get_audit_file door efficiënte tijdgebaseerde filtering te introduceren op zowel bestands- als recordniveau. Deze optimalisatie is vooral nuttig voor zoekopdrachten die zich richten op kleinere tijdsintervallen en kan helpen de prestaties te behouden in multidatabaseomgevingen.

Dual-level filtering

Filtering op bestandsniveau: De functie filtert eerst de bestanden op basis van het opgegeven tijdsbereik, waardoor het aantal bestanden dat gescand moet worden vermindert.

Record-niveau filtering: Vervolgens past het filtering toe binnen de geselecteerde bestanden om alleen de relevante records te extraheren.

Prestatieverbeteringen

De prestatieverbeteringen zijn voornamelijk afhankelijk van de rollover-tijd van de blobbestanden en het geraadpleegde tijdsbereik. Uitgaande van een uniforme verdeling van auditgegevens:

  • Verminderde belasting: Door het aantal bestanden en records om te scannen te minimaliseren, vermindert het de belasting op het systeem en verbetert het de responstijden van zoekopdrachten.

  • Schaalbaarheid: Helpt de prestaties te behouden, zelfs als het aantal databases toeneemt, hoewel de netto verbetering minder uitgesproken kan zijn in omgevingen met veel databases.

Opmerkingen

Als het file_pattern-argument dat wordt doorgegeven naar fn_get_audit_file_v2 een pad of bestand verwijst dat niet bestaat, of als het bestand geen auditbestand is, wordt het MSG_INVALID_AUDIT_FILE foutbericht teruggegeven.

De fn_get_audit_file_v2 functie kan niet worden gebruikt wanneer de audit wordt aangemaakt met de APPLICATION_LOG, SECURITY_LOG, of EXTERNAL_MONITOR opties.

Momenteel kun je in Fabric Data Warehouse geen toegang krijgen tot individuele bestanden, alleen tot de auditmap. De volgende argumenten worden niet ondersteund voor SQL Audit op een magazijnitem: file_pattern, initial_file_name, audit_record_offset.

Permissions

Benodigde permissies in Azure SQL Database

Hiervoor is de CONTROL DATABASE machtiging vereist.

  • Serverbeheerders kunnen toegang krijgen tot auditlogs van alle databases op de server.

  • Niet-serverbeheerders kunnen alleen toegang krijgen tot auditlogs uit de huidige database.

  • Blobs die niet aan bovenstaande criteria voldoen, worden overgeslagen (een lijst van overgeslagen blobs wordt weergegeven in het query-uitvoerbericht). De functie levert logs alleen terug van blobs waarvoor toegang is toegestaan.

Benodigde permissies in de Fabric SQL-database

Om auditing te beheren met Fabric-workspace-rollen, moeten gebruikers lidmaatschap hebben van de Fabric workspace Contributor-rol of hogere rechten. Controle beheren met SQL-machtigingen:

  • Als u de databasecontrole wilt configureren, moeten gebruikers de machtiging ALTER ANY DATABASE AUDIT hebben.
  • Als u auditlogboeken wilt weergeven met T-SQL, moeten gebruikers de machtiging VIEW DATABASE SECURITY AUDIT hebben.

Voor meer informatie, zie Auditing in Fabric SQL-database.

Benodigde permissies in Fabric Data Warehouse

Gebruikers moeten de Fabric-item-toestemming Audit hebben. Zie Machtigingen voor meer informatie.

Voorbeelden

Eén. View SQL audit logs for Azure SQL Database

Dit voorbeeld haalt auditlogs op van een specifieke Azure Blob Storage-locatie, waarbij records worden gefilterd tussen 2023-11-17T08:40:40Z en 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. Bekijk SQL-auditlogs voor Fabric Data Warehouse

Dit voorbeeld haalt auditlogs op uit de OneLake-map die zijn uitgelijnd met de huidige werkruimte en het warehouse, waarbij records worden gefilterd tussen 2023-11-17T08:40:40Z en 2023-11-17T09:10:40Z.

In het Fabric-portaal haal je workspaceID en warehouseIDop:

  • <workspaceID>: Bezoek je werkruimte in het Fabric-portaal. Zoek de workspace-GUID in de URL na de /groups/ sectie, of door te draaien SELECT @@SERVERNAME in een bestaand warehouse. Als je /groups/ URL wordt gevolgd door /me/, gebruik je de standaard werkruimte, en momenteel wordt SQL Audit for Fabric Data Warehouse niet ondersteund in de standaard werkruimte.
  • <warehouseID>: Bezoek je magazijn in het Stofportaal. Zoek de warehouse-ID in de URL na de /warehouses/ sectie.
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. Bekijk SQL-auditlogs voor SQL-databases in Microsoft Fabric

Dit voorbeeld haalt auditlogs op van OneLake in Microsoft Fabric, tussen 2025-11-17T08:40:40Z en 2025-11-17T09:10:40Z.

In het volgende script moet je je Microsoft Fabric workspace-ID en database-ID opgeven. Beide zijn te vinden via de URL van het Fabric-portaal. Voorbeeld: https://fabric.microsoft.com/groups/<fabric workspace id>/sqldatabases/<fabric sql database id>. De eerste unieke identifier-string in de URL is de Fabric workspace ID, en de tweede unieke identifier-string is de SQL-database-ID.

  • Vervang <fabric_workspace_id> door de ID van uw Fabric-werkruimte. U kunt de id van een werkruimte gemakkelijk vinden in de URL. Dit is de unieke tekenreeks binnen twee / tekens na /groups/ in uw browservenster.
  • Vervang <fabric sql database id> door uw SQL-database in Fabric-database-ID. U kunt de id van het database-item gemakkelijk vinden in de URL. Dit is de unieke tekenreeks binnen twee / tekens na /sqldatabases/ in uw browservenster.
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')

Meer informatie

Systeemcatalogusweergaven:

Transact-SQL: