Udostępnij za pomocą


sys.fn_get_audit_file (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL database w usłudze Microsoft Fabric

Zwraca informacje z pliku inspekcji utworzonego przez inspekcję serwera w programie SQL Server. Aby uzyskać więcej informacji, zobacz Inspekcja programu SQL Server (aparat bazy danych).

Wskazówka

Rozważ użycie sys.fn_get_audit_file_v2 zamiast tego. Funkcja wprowadza sys.fn_get_audit_file_v2 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.

Wskazówka

Dla Fabric Data Warehouse jest obsługiwany, sys.fn_get_audit_file ale sys.fn_get_audit_file_v2 (Transact-SQL) jest zalecany. Funkcja wprowadza sys.fn_get_audit_file_v2 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. Więcej informacji i przykładów można znaleźć w sekcji Configure Auditing in Fabric Data Warehouse.

Wskazówka

Dla baz danych SQL w Fabric, jest obsługiwany, sys.fn_get_audit_file ale sys.fn_get_audit_file_v2 (Transact-SQL ) jest zalecany. Funkcja wprowadza sys.fn_get_audit_file_v2 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. Więcej informacji i przykładów można znaleźć w artykule Konfiguruj audyt w bazie danych Fabric SQL.

Transact-SQL konwencje składni

Składnia

fn_get_audit_file ( file_pattern ,
    { default | initial_file_name | NULL } ,
    { default | audit_record_offset | NULL } )

Argumenty (w programowaniu)

file_pattern

Określa katalog lub ścieżkę i nazwę pliku dla pliku inspekcji, który ma być odczytany. Typ to nvarchar(260).

Przekazywanie ścieżki bez wzorca nazwy pliku generuje błąd.

Ten argument musi zawierać zarówno ścieżkę (literę dysku lub udział sieciowy), jak i nazwę pliku, która może zawierać symbol wieloznaczny. Pojedyncza gwiazdka (*) może służyć do zbierania wielu plików z zestawu plików inspekcji. Przykład:

  • \<path>\* — Zbierz wszystkie pliki inspekcji w określonej lokalizacji.

  • <path>\LoginsAudit_{GUID}* — Zbierz wszystkie pliki inspekcji, które mają określoną nazwę i parę identyfikatorów GUID.

  • <path>\LoginsAudit_{GUID}_00_29384.sqlaudit — Zbierz określony plik inspekcji.

initial_file_name

Określa ścieżkę i nazwę określonego pliku w pliku inspekcji ustawionym na rozpoczęcie odczytywania rekordów inspekcji. Typ to nvarchar(260).

Argument initial_file_name musi zawierać prawidłowe wpisy lub musi zawierać default wartość lub NULL .

audit_record_offset

Określa znaną lokalizację z plikiem określonym dla initial_file_name. Gdy ten argument jest używany, funkcja rozpoczyna odczytywanie pierwszego rekordu buforu bezpośrednio po określonym przesunięciu.

Argument audit_record_offset musi zawierać prawidłowe wpisy lub musi zawierać default wartość lub NULL . Typ jest bigint.

Zwrócone tabele

W poniższej tabeli opisano zawartość pliku inspekcji, która może zostać zwrócona przez tę funkcję.

Nazwa kolumny Typ Opis
event_time data/godzina2 Data i godzina UTC 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) Identyfikator 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 akcjach ta maska bitów to uprawnienia, które zostały przyznane, odrzucone lub odwołane.
is_column_permission bit Flaga wskazująca, czy jest to uprawnienie na poziomie kolumny. Nie może być null. Zwraca wartość 0 , gdy elementpermission_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. Zwraca wartość 0 , jeśli nie ma to zastosowania. Na przykład operacja serwera.
target_server_principal_id Int Podmiot zabezpieczeń serwera, na podstawie którego jest wykonywana GRANT/DENY/REVOKE operacja. Nie może być null. Zwraca wartość 0 , jeśli nie ma zastosowania.
target_database_principal_id Int Jednostka bazy danych wykonywana GRANT/DENY/REVOKE jest na operacji. Nie może być null. Zwraca wartość 0 , jeśli nie ma zastosowania.
object_id Int Identyfikator jednostki, na której wystąpił inspekcja, która zawiera następujące obiekty:

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

Nie może być null. Zwraca wartość 0 , jeśli jednostka jest samym serwerem lub jeśli inspekcja nie jest wykonywana na poziomie obiektu. Na przykład uwierzytelnianie.
class_type varchar(2) Typ podlegającego audytowi podmiotu, na którym jest przeprowadzany audyt. Nie może być null.
session_server_principal_name nazwa systemu Podmiot serwera dla sesji. Zmienna mogąca przyjmować wartość null. Zwraca tożsamość oryginalnego identyfikatora logowania połączonego z wystąpieniem aparatu bazy danych w przypadku jawnych lub niejawnych przełączników kontekstu.
server_principal_name nazwa systemu Bieżące logowanie. Zmienna mogąca przyjmować wartość null.
server_principal_sid varbinary (zmienna) Bieżący identyfikator zabezpieczeń logowania (SID). Zmienna mogąca przyjmować wartość null.
database_principal_name nazwa systemu Bieżący użytkownik. Zmienna mogąca przyjmować wartość null. Zwraca wartość NULL , jeśli nie jest dostępna.
target_server_principal_name nazwa systemu Docelowe logowanie akcji. Zmienna mogąca przyjmować wartość null. Zwraca wartość NULL , jeśli nie ma zastosowania.
target_server_principal_sid varbinary (zmienna) Identyfikator SID logowania docelowego. Zmienna mogąca przyjmować wartość null. Zwraca wartość NULL , jeśli nie ma zastosowania.
target_database_principal_name nazwa systemu Docelowy użytkownik działania. Zmienna mogąca przyjmować wartość null. Zwraca wartość NULL , jeśli nie ma zastosowania.
server_instance_name nazwa systemu Nazwa wystąpienia serwera, w którym wystąpiła inspekcja. Używany jest standardowy server\instance format.
database_name nazwa systemu Kontekst bazy danych, w którym wystąpiła akcja. Zmienna mogąca przyjmować wartość null. Zwraca dane NULL dla inspekcji występujących na poziomie serwera.
schema_name nazwa systemu Kontekst schematu, w którym wystąpiła akcja. Zmienna mogąca przyjmować wartość null. Zwraca dane NULL dla inspekcji występujących poza schematem.
object_name nazwa systemu Nazwa jednostki, na której wystąpiła inspekcja, która zawiera następujące obiekty:

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

Zmienna mogąca przyjmować wartość null. Zwraca wartość NULL , jeśli jednostka jest samym serwerem lub jeśli inspekcja nie jest wykonywana na poziomie obiektu. Na przykład uwierzytelnianie.
statement nvarchar(4000) Transact-SQL instrukcji, jeśli istnieje. Zmienna mogąca przyjmować wartość null. Zwraca wartość NULL , jeśli nie ma 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ą skojarzony stos języka 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 bieżący poziom zagnieżdżania ramki. Nazwa modułu jest reprezentowana w trzyczęściowym formacie (database_name, schema_name, i object_name). Nazwa modułu jest analizowana w celu uniknięcia nieprawidłowych znaków XML, takich jak <, >, /, . _x Są one ucieczki jako _xHHHH_. Oznacza HHHH czterocyfrowy kod szesnastkowy UCS-2 dla znaku. Zmienna mogąca przyjmować wartość null. Zwraca wartość NULL , gdy nie ma żadnych dodatkowych informacji zgłoszonych przez zdarzenie.
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 powiedział: Przesunięcie buforu w pliku zawierającym rekord inspekcji. Nie może być null.

Dotyczy: tylko program SQL Server
user_defined_event_id smallint Identyfikator zdarzenia zdefiniowanego przez użytkownika został przekazany jako argument do sp_audit_writeelementu . NULL dla zdarzeń systemowych (ustawienie domyślne) i niezerowe dla zdarzenia zdefiniowanego przez użytkownika. Aby uzyskać więcej informacji, zobacz sp_audit_write.

Dotyczy: SQL Server 2012 (11.x) i nowsze wersje, Azure SQL Database i SQL Managed Instance
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.

Dotyczy: SQL Server 2012 (11.x) i nowsze wersje, Azure SQL Database i SQL Managed Instance
audit_schema_version Int Zawsze 1.
sequence_group_id varbinary (zmienna) Unikatowy identyfikator.

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
transaction_id Bigint powiedział: Unikatowy identyfikator identyfikujące wiele zdarzeń inspekcji w jednej transakcji.

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
client_ip nvarchar(128) Źródłowy adres IP aplikacji klienckiej.

Dotyczy: SQL Server 2017 (14.x) i nowsze wersje oraz Azure SQL Database
application_name nvarchar(128) Nazwa aplikacji klienckiej, która wykonała instrukcję, która spowodowała zdarzenie inspekcji.

Dotyczy: SQL Server 2017 (14.x) i nowsze wersje oraz Azure SQL Database
duration_milliseconds Bigint powiedział: Czas trwania wykonywania zapytania w milisekundach.

Dotyczy: Azure SQL Database i SQL Managed Instance
response_rows Bigint powiedział: Liczba wierszy zwróconych w zestawie wyników.

Dotyczy: Azure SQL Database i SQL Managed Instance
affected_rows Bigint powiedział: Liczba wierszy zmienionych przez wykonane polecenie.

Dotyczy: tylko usługa Azure SQL Database
connection_id unikalnyidentyfikator Identyfikator połączenia na serwerze.

Dotyczy: Azure SQL Database i SQL Managed Instance
data_sensitivity_information nvarchar(4000) Typy informacji i etykiety poufności zwracane przez zapytanie poddanego audytowi, na podstawie kolumn sklasyfikowanych w bazie danych. Dowiedz się więcej na temat odnajdywania i klasyfikacji danych usługi Azure SQL Database.

Dotyczy: tylko usługa Azure SQL Database
host_name nvarchar(128) Nazwa hosta maszyny klienckiej.
session_context nvarchar(4000) Pary klucz-wartość, które są częścią bieżącego kontekstu sesji.
client_tls_version Bigint powiedział: Minimalna wersja protokołu TLS obsługiwana przez klienta.
client_tls_version_name nvarchar(128) Minimalna wersja protokołu TLS obsługiwana przez klienta.
database_transaction_id Bigint powiedział: Identyfikator transakcji bieżącej transakcji w bieżącej sesji.
ledger_start_sequence_number Bigint powiedział: Numer sekwencji operacji w ramach transakcji, która utworzyła wersję wiersza.

Dotyczy: Tylko usługa Azure SQL Database
external_policy_permissions_checked nvarchar(4000) Informacje związane z sprawdzaniem uprawnień autoryzacji zewnętrznej, gdy jest generowane zdarzenie inspekcji, a zasady autoryzacji zewnętrznej usługi Purview są oceniane.

Dotyczy: Tylko usługa Azure SQL Database
obo_middle_tier_app_id varchar(120) Identyfikator aplikacji warstwy środkowej, która łączy się z usługą Azure SQL Database przy użyciu dostępu on-behalf-of (OBO). Zmienna mogąca przyjmować wartość null. Zwraca wartość NULL , jeśli żądanie nie zostało wykonane przy użyciu dostępu OBO.

Dotyczy: tylko usługa Azure SQL Database
is_local_secondary_replica bit True jeśli rekord inspekcji pochodzi z lokalnej repliki pomocniczej tylko do odczytu, False w przeciwnym razie.

Dotyczy: Tylko usługa Azure SQL Database

Uwagi

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

  • fn_get_audit_file nie można używać podczas tworzenia inspekcji za pomocą APPLICATION_LOGopcji , SECURITY_LOGlub EXTERNAL_MONITOR .

Uprawnienia

Program SQL Server 2019 (15.x) i starsze wersje wymagają uprawnień CONTROL SERVER na serwerze.

Program SQL Server 2022 (16.x) i nowsze wersje wymagają uprawnień VIEW SERVER SECURITY AUDIT na serwerze.

Przykłady

W tym przykładzie odczytuje plik o nazwie \\serverName\Audit\HIPAA_AUDIT.sqlaudit.

SELECT *
FROM sys.fn_get_audit_file(
    '\\serverName\Audit\HIPAA_AUDIT.sqlaudit',
    DEFAULT,
    DEFAULT
);
GO

Pełny przykład tworzenia inspekcji można znaleźć w temacie SQL Server Audit (Database Engine)( Inspekcja programu SQL Server (aparat bazy danych).

Ograniczenia

Wybieranie wierszy z sys.fn_get_audit_file poziomu tabeli Utwórz jako wybierz (CTAS) lub INSERT INTO jest ograniczeniem podczas uruchamiania w usłudze Azure Synapse Analytics. Mimo że zapytanie zakończy się pomyślnie i nie pojawią się żadne komunikaty o błędach, w tabeli utworzonej przy użyciu funkcji CTAS lub INSERT INTO.

Więcej informacji

Widoki wykazu systemu:

Język Transact-SQL: