Udostępnij za pomocą


sys.fn_get_audit_file_v2 (Transact-SQL)

Dotyczy do:Azure SQL DatabaseMagazyn w Microsoft FabricBaza danych SQL w Microsoft Fabric

Funkcja sys.fn_get_audit_file_v2 systemu została zaprojektowana tak, aby pobierać dane z dziennika audytu z większą efektywnością w porównaniu do poprzednika, sys.fn_get_audit_file. Funkcja wprowadza filtrowanie oparte na czasie zarówno na poziomie pliku, jak i rekordu, co zapewnia znaczącą poprawę wydajności, szczególnie dla zapytań skierowanych do określonych przedziałów czasowych.

Zwraca informacje z pliku audytowego utworzonego podczas audytu serwera. Aby uzyskać więcej informacji, zobacz SQL Server Audit (Database Engine).

Transact-SQL konwencje składni

Składnia

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

Dotyczy do: Azure SQL Database only

Określa katalog lub ścieżkę oraz nazwę pliku dla zestawu plików audytowych, który ma być odczytywany. file_pattern to nvarchar(260).

Przekazanie ścieżki bez wzorca nazw pliku generuje błąd.

Ten argument służy do określenia adresu URL blob-a (w tym endpoint pamięci i kontenera). Chociaż nie obsługuje gwiazdki dzikiej, możesz użyć częściowego prefiksu nazwy pliku (blob) (zamiast pełnej nazwy blob), aby zebrać wiele plików (blobów) zaczynających się od tego prefiksu. Przykład:

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/ - zbiera wszystkie pliki audytowe (BLOB) dla konkretnej bazy danych.

  • <Storage_endpoint>/<Container>/<ServerName>/<DatabaseName>/<AuditName>/<CreationDate>/<FileName>.xel - zbiera konkretny plik audytowy (blob).

initial_file_name

Dotyczy do: Azure SQL Database only

Określa ścieżkę i nazwę konkretnego pliku w zestawie plików audytowych, z którego można zacząć czytać rekordy audytu. initial_file_name to nvarchar(260).

Argument initial_file_name musi zawierać poprawne wpisy lub wartość default albo NULL .

audit_record_offset

Dotyczy do: Azure SQL Database only

Określa znaną lokalizację z plikiem określonym dla initial_file_name. Gdy ten argument jest użyty, funkcja zaczyna odczyt od pierwszego rekordu bufora bezpośrednio po określonym offset.

Argument audit_record_offset musi zawierać poprawne elementy lub wartość default albo NULL . audit_record_offset jest istotne.

start_time

Czas rozpoczęcia filtrowania logów. Zapisy sprzed tego okresu są wyłączone.

end_time

Czas na filtrowanie logów. Zapisy po tym czasie są wyłączone.

Zwrócona tabela

Poniższa tabela opisuje zawartość pliku audytowego zwracaną przez tę funkcję.

Nazwa kolumny Typ Description
event_time datetime2 Data i godzina uruchomienia akcji z możliwością inspekcji. Nie może być null.
sequence_number int Śledzi sekwencję rekordów w ramach pojedynczego rekordu inspekcji, który był zbyt duży, aby zmieścić się w buforze zapisu na potrzeby inspekcji. Nie może być null.
action_id varchar(4) Identyfikacja akcji. Nie może być null.
succeeded bit Wskazuje, czy akcja, która wyzwoliła zdarzenie powiodło się. Nie może być null. W przypadku wszystkich zdarzeń innych niż zdarzenia logowania ta funkcja zgłasza tylko, czy sprawdzanie uprawnień zakończyło się powodzeniem, czy niepowodzeniem, a nie operacją.

1 = powodzenie
0 = niepowodzenie
permission_bitmask varbinary(16) W niektórych działaniach ta bitmaska to uprawnienia, które zostały przyznane, odrzucone lub cofnięte.
is_column_permission bit Flaga wskazująca, czy jest to uprawnienie na poziomie kolumny. Nie może być null. Zwraca, 0 gdy .permission_bitmask = 0

1 = prawda
0 = fałsz
session_id smallint Identyfikator sesji, w której wystąpiło zdarzenie. Nie może być null.
server_principal_id int Identyfikator kontekstu logowania, w ramach którego jest wykonywana akcja. Nie może być null.
database_principal_id int Identyfikator kontekstu użytkownika bazy danych, w ramach którego jest wykonywana akcja. Nie może być null. Zwroty 0 , jeśli to nie dotyczy. Na przykład operacja serwera.
target_server_principal_id int Zasada serwera, na której wykonywana jest operacjaGRANT/DENY/REVOKE. Nie może być null. Zwroty 0 , jeśli nie mają zastosowania.
target_database_principal_id int Na zasadzie bazy danych, na której wykonywana jest operacjaGRANT/DENY/REVOKE. Nie może być null. Zwroty 0 , jeśli nie mają zastosowania.
object_id int ID podmiotu, na którym przeprowadzono audyt, który obejmuje następujące obiekty:

- Obiekty serwera
-Baz danych
- Obiekty bazy danych
- Obiekty schematu

Nie może być null. Zwraca się 0 , czy jednostką jest sam Serwer, czy audyt nie został przeprowadzony na poziomie obiektu. Na przykład uwierzytelnianie.
class_type varchar(2) Typ jednostki inspekcji wykonywanej przez inspekcję. Nie może być null.
session_server_principal_name sysname Serwer na sesję. Nullable. Zwraca tożsamość oryginalnego logowania połączonego z instancją silnika bazy danych na wypadek jawnych lub ukrytych zmian kontekstu.
server_principal_name sysname Bieżące logowanie. Nullable.
server_principal_sid varbinary Bieżący identyfikator SID logowania. Nullable.
database_principal_name sysname Bieżący użytkownik. Nullable. Zwroty NULL , jeśli nie są dostępne.
target_server_principal_name sysname Zalogowanie do celu lub akcja. Nullable. Zwroty NULL , jeśli nie mają zastosowania.
target_server_principal_sid varbinary SID logowania do celu. Nullable. Zwroty NULL , jeśli nie mają zastosowania.
target_database_principal_name sysname Docelowy użytkownik działania. Nullable. Zwroty NULL , jeśli nie mają zastosowania.
server_instance_name sysname Nazwa wystąpienia serwera, w którym wystąpiła inspekcja. Stosowany jest standardowy server\instance format.
database_name sysname Kontekst bazy danych, w którym wystąpiła akcja. Nullable. Zwroty NULL z audytów przeprowadzanych na poziomie serwera.
schema_name sysname Kontekst schematu, w którym wystąpiła akcja. Nullable. Zwroty NULL z audytów wykonywanych poza schematem.
object_name sysname Nazwa podmiotu, na którym przeprowadzono audyt, obejmująca następujące obiekty:

- Obiekty serwera
-Baz danych
- Obiekty bazy danych
- Obiekty schematu

Nullable. Zwraca się NULL , czy jednostką jest sam Serwer, czy audyt nie został przeprowadzony na poziomie obiektu. Na przykład uwierzytelnianie.
statement nvarchar(4000) Transact-SQL oświadczenie, jeśli w ogóle istnieje. Nullable. Zwroty NULL , jeśli nie mają zastosowania.
additional_information nvarchar(4000) Unikatowe informacje, które dotyczą tylko jednego zdarzenia, są zwracane jako XML. Kilka akcji podlegających inspekcji zawiera tego rodzaju informacje.

Jeden poziom stosu T-SQL jest wyświetlany w formacie XML dla akcji, które mają powiązany stos T-SQL. Format XML to: <tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>

frame nest_level wskazuje aktualny poziom zagnieżdżenia ramki. Nazwa modułu jest reprezentowana w formacie trzech części (database_name, schema_name, oraz object_name). Nazwa modułu jest analizowana, aby uniknąć nieprawidłowych znaków XML takich jak <, >, /, _x. Uciekli jako _xHHHH_. Oznacza HHHH czterocyfrowy szesnastkowy kod UCS-2 dla znaku. Nullable. Wraca, NULL gdy nie ma dodatkowych informacji zgłaszanych przez wydarzenie.
file_name varchar(260) Ścieżka i nazwa pliku dziennika inspekcji, z którego pochodzi rekord. Nie może być null.
audit_file_offset bigint Przesunięcie buforu w pliku zawierającym rekord inspekcji. Nie może być null.
user_defined_event_id smallint Identyfikator zdarzenia zdefiniowany przez użytkownika przekazywany jako argument do sp_audit_write. NULL dla zdarzeń systemowych (domyślnie) oraz niezerowych dla zdarzeń zdefiniowanych przez użytkownika. Aby uzyskać więcej informacji, zobacz sp_audit_write (Transact-SQL).
user_defined_information nvarchar(4000) Służy do rejestrowania wszelkich dodatkowych informacji, które użytkownik chce zarejestrować w dzienniku sp_audit_write inspekcji przy użyciu procedury składowanej.
audit_schema_version int Zawsze 1.
sequence_group_id varbinary Unikalny identyfikator.<
transaction_id bigint Unikalny identyfikator do identyfikacji wielu zdarzeń audytowych w jednej transakcji.
client_ip nvarchar(128) Źródłowe IP aplikacji klienckiej.
application_name nvarchar(128) Nazwa aplikacji klienckiej, która wykonała zdarzenie wywołające zdarzenie audytu.
duration_milliseconds bigint Czas wykonania zapytań w milisekundach.
response_rows bigint Liczba wierszy zwracanych w zbiorze wyników.<
affected_rows bigint Liczba wierszy dotkniętych wykonanym zdaniem.
connection_id uniqueidentifier Identyfikator połączenia na serwerze.
data_sensitivity_information nvarchar(4000) Typy informacji i etykiety poufności zwracane przez zapytanie poddane inspekcji na podstawie kolumn sklasyfikowanych w bazie danych. Dowiedz się więcej o odkrywaniu i klasyfikacji danych Azure SQL Database.
host_name nvarchar(128) Nazwa hosta komputera-klienta.
session_context nvarchar(4000) Pary klucz-wartość będące częścią bieżącego kontekstu sesji.
client_tls_version bigint Minimalna wersja TLS obsługiwana przez klienta.
client_tls_version_name nvarchar(128) Minimalna wersja TLS obsługiwana przez klienta.
database_transaction_id bigint Identyfikator transakcji aktualnej transakcji w bieżącej sesji.
ledger_start_sequence_number bigint Numer sekwencyjny operacji w ramach transakcji, która utworzyła wersję wierszową.
external_policy_permissions_checked nvarchar(4000) Informacje dotyczące sprawdzania zewnętrznych uprawnień, momentu generowania zdarzenia audytowego oraz oceny polityk zewnętrznych autoryzacji Purview.
obo_middle_tier_app_id varchar(120) ID aplikacji średniej klasy, która łączy się za pomocą dostępu on-behalf-of (OBO). Nullable. Zwraca, NULL jeśli żądanie nie zostało złożone przez dostęp OBO.
is_local_secondary_replica bit Truejeśli rekord audytu pochodzi z lokalnej repliki wtórnej tylko do odczytu, w przeciwnym razie. False

Ulepszenia w sys.fn_get_audit_file

Funkcja ta sys.fn_get_audit_file_v2 stanowi znaczną poprawę względem starszych sys.fn_get_audit_file poprzez wprowadzenie efektywnego filtrowania czasowego zarówno na poziomie pliku, jak i rekordu. Ta optymalizacja jest szczególnie korzystna dla zapytań skierowanych do krótszych przedziałów czasowych i może pomóc utrzymać wydajność w środowiskach wielobazowych danych.

Filtrowanie dwupoziomowe

Filtrowanie na poziomie plików: Funkcja najpierw filtruje pliki na podstawie określonego zakresu czasowego, zmniejszając liczbę plików wymagających skanowania.

Filtrowanie na poziomie rekordu: Następnie stosuje filtrowanie w wybranych plikach, aby wyodrębnić tylko odpowiednie rekordy.

Ulepszenia wydajności

Poprawa wydajności zależy głównie od czasu przejścia plików blob oraz zapytania. Przy założeniu jednolitego rozkładu dokumentacji audytowej:

  • Zmniejszenie obciążenia: Minimalizując liczbę plików i rekordów do skanowania, zmniejsza się obciążenie systemu i poprawia czas odpowiedzi na zapytania.

  • Skalowalność: Pomaga utrzymać wydajność nawet przy wzroście liczby baz danych, choć poprawa netto może być mniej widoczna w środowiskach z dużą liczbą baz danych.

Uwagi

Jeśli argument file_pattern przekazany do fn_get_audit_file_v2 odwołania się do ścieżki lub pliku, który nie istnieje, albo jeśli plik nie jest plikiem audytowym, MSG_INVALID_AUDIT_FILE komunikat o błędzie jest zwracany.

Funkcja ta fn_get_audit_file_v2 nie może być użyta, gdy audyt jest tworzony za pomocą APPLICATION_LOGopcji , SECURITY_LOG, lub EXTERNAL_MONITOR .

Obecnie w Fabric Data Warehouse nie możesz uzyskać dostępu do pojedynczych plików, tylko do folderu audytu. Następujące argumenty nie są wspierane dla audytu SQL na pozycie magazynowym: file_pattern, initial_file_name, . audit_record_offset

Permissions

Uprawnienia wymagane w Azure SQL Database

Wymaga uprawnienia CONTROL DATABASE.

  • Administratorzy serwerów mają dostęp do logów audytowych wszystkich baz danych na serwerze.

  • Osoby niebędące administratorami serwerów mogą uzyskać dostęp do logów audytowych tylko z aktualnej bazy danych.

  • Bloby, które nie spełniają powyższych kryteriów, są pomijane (lista pominiętych blobów jest wyświetlana w wiadomości wyjściowej zapytania). Funkcja zwraca logi tylko z blobów, do których dostęp jest dozwolony.

Uprawnienia wymagane w bazie danych Fabric SQL

Aby zarządzać audytem za pomocą ról w przestrzeni roboczej Fabric, użytkownicy muszą posiadać członkostwo w roli Współtwórcy przestrzeni roboczej Fabric lub wyższe uprawnienia. Aby zarządzać inspekcją przy użyciu uprawnień SQL:

  • Aby skonfigurować inspekcję bazy danych, użytkownicy muszą mieć uprawnienie ALTER ANY DATABASE AUDIT.
  • Aby wyświetlić dzienniki inspekcji przy użyciu T-SQL, użytkownicy muszą mieć uprawnienie WYŚWIETL AUDYT BEZPIECZEŃSTWA BAZY DANYCH.

Więcej informacji można znaleźć w sekcji Audyt w bazie danych Fabric SQL.

Wymagane uprawnienia w Fabric Data Warehouse

Użytkownicy muszą mieć uprawnienia do przedmiotu Audit Fabric. Aby uzyskać więcej informacji, zobacz Uprawnienia.

Przykłady

A. Zobacz logi audytowe SQL dla Azure SQL Database

Ten przykład pobiera logi audytowe z konkretnej lokalizacji Azure Blob Storage, filtrując rekordy między 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. Zobacz logi audytowe SQL dla Fabric Data Warehouse

Ten przykład pobiera logi audytowe z folderu OneLake wyrównane z aktualnym workspace i magazynem, filtrując rekordy między 2023-11-17T08:40:40Z a 2023-11-17T09:10:40Z.

W portalu Fabric pobierz swoje workspaceID i warehouseID:

  • <workspaceID>: Odwiedź swoje miejsce pracy w portalu Tkanina. Znajdź GUID przestrzeni roboczej w URL po sekcji /groups/ lub uruchamiając SELECT @@SERVERNAME w istniejącym magazynie. Jeśli Twój /groups/ URL jest poprzedzony przez /me/, używasz domyślnego workspace, a obecnie SQL Audit for Fabric Data Warehouse nie jest wspierany w domyślnym workspace.
  • <warehouseID>: Odwiedź swój magazyn w portalu Tkaniny. Znajdź ID magazynu w URL po sekcji /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. Zobacz logi audytowe SQL dla bazy danych SQL w Microsoft Fabric

Ten przykład pobiera logi audytowe z OneLake w Microsoft Fabric, pomiędzy 2025-11-17T08:40:40Z a 2025-11-17T09:10:40Z.

W poniższym skrypcie musisz podać identyfikator przestrzeni roboczej Microsoft Fabric oraz identyfikator bazy danych. Oba można znaleźć w adresie URL portalu Fabric. Na przykład: https://fabric.microsoft.com/groups/<fabric workspace id>/sqldatabases/<fabric sql database id>. Pierwszym unikalnym ciągiem identyfikatora w URL jest identyfikator przestrzeni roboczej Fabric, a drugim unikalnym ciągiem identyfikatora jest identyfikator bazy danych SQL.

  • Zastąp <fabric_workspace_id> identyfikatorem obszaru roboczego Fabric. Identyfikator obszaru roboczego można łatwo znaleźć w adresie URL. Jest to unikatowy ciąg w dwóch / znakach po /groups/ w oknie przeglądarki.
  • Zastąp <fabric sql database id> swoją bazą danych SQL w identyfikatorze bazy danych Fabric. Identyfikator elementu bazy danych można łatwo znaleźć w adresie URL. Jest to unikatowy ciąg w dwóch / znakach po /sqldatabases/ w oknie przeglądarki.
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')

Więcej informacji

Widoki katalogu systemowego:

Transact-SQL: