Sdílet prostřednictvím


sys.fn_get_audit_file_v2 (Transact-SQL)

Platí na:Azure SQL DatabaseSklad v Microsoft FabricSQL databáze v Microsoft Fabric

Systémová sys.fn_get_audit_file_v2 funkce je navržena tak, aby získávala data z auditních logů s vyšší efektivitou ve srovnání s jejím předchůdcem. sys.fn_get_audit_file Funkce zavádí časově založené filtrování jak na úrovni souboru, tak záznamu, což přináší významné zlepšení výkonu, zejména u dotazů zaměřených na konkrétní časové období.

Vrací informace z auditního souboru vytvořeného auditem serveru. Další informace získáte v části SQL Server Audit (Database Engine).

Transact-SQL konvence syntaxe

Syntaxe

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

Platí na: Azure SQL Database only

Specifikuje adresář nebo cestu a název souboru pro auditní souborovou sadu, která má být čtena. file_pattern je nvarchar(260).

Předání cesty bez vzoru názvu souboru způsobuje chybu.

Tento argument se používá k určení blob URL (včetně endpointu úložiště a kontejneru). I když nepodporuje hvězdičku, můžete použít částečný prefix názvu souboru (blob) (místo plného blob) k získání více souborů (blobů) začínajících touto předponou. Například:

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/ - shromažďuje všechny auditní soubory (bloby) pro konkrétní databázi.

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/<AuditName>/<CreationDate>/<FileName>.xel - Shromažďuje konkrétní auditní soubor (BLOB).

initial_file_name

Platí na: Azure SQL Database only

Specifikuje cestu a název konkrétního souboru v auditní sadě souborů, ze které se začnou číst auditní záznamy. initial_file_name je nvarchar(260).

Argument initial_file_name musí obsahovat platné položky, nebo musí obsahovat buď default hodnotu nebo NULL .

audit_record_offset

Platí na: Azure SQL Database only

Specifikuje známou polohu se souborem určeným pro initial_file_name. Když je tento argument použit, funkce začne číst první záznam bufferu bezprostředně po specifikovaném offsetu.

Argument audit_record_offset musí obsahovat platné položky nebo musí obsahovat default hodnotu nebo NULL . audit_record_offset je velké.

start_time

Čas začátku filtrování logů. Záznamy před tímto obdobím jsou vyloučeny.

end_time

Konec filtrace logů. Záznamy po tomto období jsou vyloučeny.

Vrácená tabulka

Následující tabulka popisuje obsah auditního souboru vrácený touto funkcí.

Název sloupce Typ Description
event_time datetime2 Datum a čas, kdy se aktivuje auditovatelná akce. Není nulovatelný.
sequence_number int Sleduje posloupnost záznamů v rámci jednoho záznamu auditu, který byl příliš velký, aby se vešl do vyrovnávací paměti zápisu pro audity. Není nulovatelný.
action_id varchar(4) Identifikace akce. Není nulovatelný.
succeeded bit Určuje, jestli akce, která aktivovala událost, byla úspěšná. Není nulovatelný. U všech událostí kromě událostí přihlášení to jenom hlásí, jestli byla kontrola oprávnění úspěšná nebo neúspěšná, ne operace.

1 = úspěch
0 = selhání
permission_bitmask varbinary(16) V některých případech je tato bitmaska povoleními, která byla udělena, zamítnuta nebo odebrána.
is_column_permission bit Příznak označující, jestli se jedná o oprávnění na úrovni sloupce. Není nulovatelný. Vrací, 0 když .permission_bitmask = 0

1 = pravda
0 = nepravda
session_id smallint ID relace, na které došlo k události. Není nulovatelný.
server_principal_id int ID přihlašovacího kontextu, ve které se akce provádí. Není nulovatelný.
database_principal_id int ID kontextu uživatele databáze, ve které se akce provádí. Není nulovatelný. Vrácení zboží 0 , pokud to není relevantní. Například operace serveru.
target_server_principal_id int Princip serveru, na kterém GRANT/DENY/REVOKE je operace prováděna. Není nulovatelný. Pokud není relevantní, vrácení vrácení 0 .
target_database_principal_id int Princip databáze, na kterém GRANT/DENY/REVOKE se operace provádí. Není nulovatelný. Pokud není relevantní, vrácení vrácení 0 .
object_id int ID subjektu, na kterém audit proběhl, včetně následujících objektů:

- Objekty serveru
-Databáze
- Databázové objekty
- Objekty schématu

Není nulovatelný. Vrátí, 0 pokud je entitou samotný server nebo pokud audit není proveden na úrovni objektu. Například ověřování.
class_type varchar(2) Typ auditovatelné entity, u které probíhá audit. Není nulovatelný.
session_server_principal_name sysname Server principal pro relaci. Nullable. Vrací identitu původního přihlašovacího údaje, která byla připojena k instanci databázového enginu v případě explicitních nebo implicitních změn kontextu.
server_principal_name sysname Aktuální přihlášení. Nullable.
server_principal_sid varbinary Aktuální identifikátor SID přihlášení. Nullable.
database_principal_name sysname Aktuální uživatel. Nullable. Vrácení vrácení NULL , pokud nejsou k dispozici.
target_server_principal_name sysname Přihlášení k cíli nebo akce. Nullable. Pokud není relevantní, vrácení vrácení NULL .
target_server_principal_sid varbinary SID přihlášení cíle. Nullable. Pokud není relevantní, vrácení vrácení NULL .
target_database_principal_name sysname Cílový uživatel akce. Nullable. Pokud není relevantní, vrácení vrácení NULL .
server_instance_name sysname Název instance serveru, ve které došlo k auditu. Používá se standardní server\instance formát.
database_name sysname Kontext databáze, ve kterém došlo k akci. Nullable. Vrácení auditů NULL prováděných na úrovni serveru.
schema_name sysname Kontext schématu, ve kterém došlo k akci. Nullable. Přiznání NULL auditů prováděných mimo schéma.
object_name sysname Název subjektu, na kterém audit proběhl, který zahrnuje následující objekty:

- Objekty serveru
-Databáze
- Databázové objekty
- Objekty schématu

Nullable. Vrátí, NULL pokud je entitou samotný server nebo pokud audit není proveden na úrovni objektu. Například ověřování.
statement nvarchar(4000) Transact-SQL tvrzení, pokud vůbec existuje. Nullable. Pokud není relevantní, vrácení vrácení NULL .
additional_information nvarchar(4000) Jedinečné informace, které platí pouze pro jednu událost, se vrátí jako XML. Tento druh informací obsahuje několik auditovatelných akcí.

Jedna úroveň T-SQL stacku je zobrazena ve formátu XML pro akce, které mají přiřazený T-SQL stack. XML formát je: <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

frame nest_level ukazuje aktuální úroveň vnoření rámce. Název modulu je reprezentován ve formátu tří částí (database_name, schema_name, a ).object_name Název modulu je parsován tak, aby unikl neplatným XML znakům jako <, >, /, _x. Jsou utekli jako _xHHHH_. Symbol HHHH znamená čtyřmístný hexadecimální kód UCS-2 pro tento znak. Nullable. Vrací se NULL , když událost nenahlásí žádné další informace.
file_name varchar(260) Cesta a název souboru protokolu auditu, ze kterého záznam pochází. Není nulovatelný.
audit_file_offset bigint Posun vyrovnávací paměti v souboru, který obsahuje záznam auditu. Není nulovatelný.
user_defined_event_id smallint Uživatelem definované ID události bylo předáno jako argument do sp_audit_write. NULL pro systémové události (výchozí) a nenulové pro uživatelem definované události. Další informace najdete v tématu sp_audit_write (Transact-SQL).
user_defined_information nvarchar(4000) Používá se k zaznamenání dalších informací, které chce uživatel zaznamenat v protokolu auditu pomocí sp_audit_write uložené procedury.
audit_schema_version int Vždy 1.
sequence_group_id varbinary Jedinečný identifikátor.<
transaction_id bigint Jedinečný identifikátor pro identifikaci více auditních událostí v jedné transakci.
client_ip nvarchar(128) Zdrojová IP klientská aplikace.
application_name nvarchar(128) Název klientské aplikace, která provedla příkaz způsobující auditní událost.
duration_milliseconds bigint Délka provedení dotazu v milisekundách.
response_rows bigint Počet řádků vrácených ve výsledné množině.<
affected_rows bigint Počet řádků ovlivněných vykonaným příkazem.
connection_id uniqueidentifier ID připojení na serveru.
data_sensitivity_information nvarchar(4000) Typy informací a popisky citlivosti vrácené auditovaným dotazem na základě klasifikovaných sloupců v databázi. Zjistěte více o objevování a klasifikaci dat Azure SQL Database.
host_name nvarchar(128) Hostitelské jméno klientského stroje.
session_context nvarchar(4000) Páry klíč-hodnota, které jsou součástí aktuálního kontextu relace.
client_tls_version bigint Minimální verze TLS podporovaná klientem.
client_tls_version_name nvarchar(128) Minimální verze TLS podporovaná klientem.
database_transaction_id bigint ID transakce aktuální transakce v aktuální relaci.
ledger_start_sequence_number bigint Pořadové číslo operace v rámci transakce, která vytvořila řádkovou verzi.
external_policy_permissions_checked nvarchar(4000) Informace týkající se kontroly externích autorizačních oprávnění, kdy je auditní událost generována, a vyhodnocování externích autorizačních politik Purview.
obo_middle_tier_app_id Varchar(120) ID aplikace střední úrovně, která se připojuje pomocí přístupu on-behalf-of (OBO). Nullable. Vrací se NULL , pokud žádost není provedena přes OBO přístup.
is_local_secondary_replica bit True pokud auditní záznam pochází z lokální sekundární repliky pouze pro čtení, False jinak.

Vylepšení oproti sys.fn_get_audit_file

Tato sys.fn_get_audit_file_v2 funkce představuje výrazné zlepšení oproti starším sys.fn_get_audit_file zavedením efektivního časově založeného filtrování jak na úrovni souboru, tak záznamu. Tato optimalizace je zvláště přínosná pro dotazy zaměřené na kratší časové intervaly a může pomoci udržet výkon v prostředí s více databázemi.

Dvouúrovňové filtrování

Filtrování na úrovni souborů: Funkce nejprve filtruje soubory podle stanoveného časového rozmezí, čímž snižuje počet souborů, které je třeba prohledat.

Filtrování na úrovni záznamů: Poté aplikuje filtrování uvnitř vybraných souborů, aby extrahovalo pouze relevantní záznamy.

Vylepšení výkonu

Zlepšení výkonu závisí především na době převedení blob souborů a dotazovaném časovém rozsahu. Za předpokladu jednotného rozložení auditních záznamů:

  • Snížení zátěže: Minimalizací počtu souborů a záznamů ke skenování se snižuje zátěž systému a zlepšuje se doba odezvy dotazů.

  • Škálovatelnost: Pomáhá udržet výkon i při rostoucím počtu databází, i když celkové zlepšení může být méně výrazné v prostředích s vysokým počtem databází.

Poznámky

Pokud file_pattern argument předávaný odkazuje fn_get_audit_file_v2 na cestu nebo soubor, který neexistuje, nebo pokud soubor není auditní soubor, chybová zpráva MSG_INVALID_AUDIT_FILE se vrátí.

Tuto fn_get_audit_file_v2 funkci nelze použít, pokud je audit vytvořen pomocí APPLICATION_LOG, SECURITY_LOG, nebo EXTERNAL_MONITOR možností.

V současnosti v Fabric Data Warehouse nemůžete přistupovat k jednotlivým souborům, pouze k auditní složce. Následující argumenty nejsou podporovány pro SQL audit na skladové položce: file_pattern, initial_file_name, . audit_record_offset

Povolení

Oprávnění požadovaná v Azure SQL Database

Vyžaduje oprávnění CONTROL DATABASE.

  • Správci serveru mají přístup k auditním logům všech databází na serveru.

  • Ne-správci serveru mají přístup pouze k auditním logům z aktuální databáze.

  • Bloby, které nesplňují výše uvedená kritéria, jsou přeskočeny (seznam přeskočených blobů se zobrazí ve výstupní zprávě dotazu). Funkce vrací logy pouze z blobů, ke kterým je přístup povolen.

Oprávnění požadovaná v databázi Fabric SQL

Pro správu auditu pomocí rolí Fabric workspace musí mít uživatelé členství v roli Fabric workspace Contributor nebo vyšší oprávnění. Správa auditování pomocí oprávnění SQL:

  • Aby uživatelé mohli nakonfigurovat audit databáze, musí mít oprávnění ALTER ANY DATABASE AUDIT.
  • Pokud chcete zobrazit protokoly auditu pomocí T-SQL, musí mít uživatelé oprávnění VIEW DATABASE SECURITY AUDIT.

Pro více informací viz Auditing in Fabric SQL database.

Oprávnění požadovaná ve skladu dat Fabric

Uživatelé musí mít oprávnění k předmětu Audit Fabric. Další informace najdete v tématu Oprávnění.

Examples

A. View SQL audit logs for Azure SQL Database

Tento příklad získává auditní logy z konkrétního místa Azure Blob Storage a filtruje záznamy mezi 2023-11-17T08:40:40Z a 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. Zobrazit SQL auditní logy pro Fabric Data Warehouse

Tento příklad získává auditní logy ze složky OneLake zarovnané s aktuálním pracovním prostorem a skladem, filtruje záznamy mezi 2023-11-17T08:40:40Z a 2023-11-17T09:10:40Z.

V portálu Fabric si natáhněte své workspaceID a :warehouseID

  • <workspaceID>: Navštivte své pracovní místo v portálu Fabric. Najděte GUID pracovního prostoru v URL za sekcí, /groups/ nebo spuštěním SELECT @@SERVERNAME ve stávajícím skladu. Pokud je za URL /groups/ následováno , /me/používáte výchozí pracovní prostor a v současnosti SQL Audit for Fabric Data Warehouse není ve výchozím pracovním prostoru podporován.
  • <warehouseID>: Navštivte svůj sklad v portálu Tkaniny. Najděte ID skladu v URL za sekcí./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. Zobrazit SQL auditní logy pro SQL databázi v Microsoft Fabric

Tento příklad získává auditní záznamy z OneLake v Microsoft Fabric, mezi 2025-11-17T08:40:40Z a 2025-11-17T09:10:40Z.

V následujícím skriptu musíte zadat ID pracovního prostoru Microsoft Fabric a ID databáze. Obojí lze najít v URL z portálu Fabric. Například: https://fabric.microsoft.com/groups/<fabric workspace id>/sqldatabases/<fabric sql database id>. Prvním jedinečným identifikačním řetězcem v URL je ID pracovního prostoru Fabric a druhým jedinečným identifikačním řetězcem je ID SQL databáze.

  • Nahraďte <fabric_workspace_id> ID pracovního prostoru Fabric. ID pracovního prostoru můžete snadno najít v adrese URL. Jedná se o jedinečný řetězec uvnitř dvou / znaků za /groups/ oknem prohlížeče.
  • Nahraďte <fabric sql database id> vaší SQL databází v rámci identifikátoru databáze Fabric. ID položky databáze můžete snadno najít v adrese URL, jedná se o jedinečný řetězec uvnitř dvou / znaků za /sqldatabases/ oknem prohlížeče.
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')

Více informací

Pohledy na katalog systému:

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)
  • ZMĚNIT AUTORIZACI (Transact-SQL)