Rekordy inspekcji programu SQL Server

Dotyczy:SQL Server

Funkcja inspekcji programu SQL Server umożliwia inspekcję grup zdarzeń i zdarzeń na poziomie serwera i bazy danych. Aby uzyskać więcej informacji, zobacz Inspekcja programu SQL Server (aparat bazy danych). SQL Server.

Inspekcje składają się z zeru lub więcej elementów działań audytu, które są rejestrowane do celu audytu. Element docelowy inspekcji może być plikiem binarnym, dziennikiem zdarzeń aplikacji systemu Windows lub dziennikiem zdarzeń zabezpieczeń systemu Windows. Rekordy wysyłane do obiektu docelowego mogą zawierać elementy opisane w poniższej tabeli:

Nazwa kolumny Description Typ Zawsze dostępne
event_time Data i czas, kiedy uruchomiona jest akcja podlegająca inspekcji. datetime2 Tak
sequence_number Śledzi sekwencję rekordów w ramach pojedynczego rekordu audytu, który był zbyt duży, aby zmieścić się w buforze zapisu podczas audytów. Int Tak
action_id Identyfikator akcji

Porada: Aby użyć action_id jako predykatu, należy przekonwertować go z ciągu znaku na wartość liczbową. Aby uzyskać więcej informacji, zobacz Filtrowanie inspekcji SQL Server według predykatu action_id/class_type.
varchar(4) Tak
Zakończyła się pomyślnie Wskazuje, czy akcja, która wyzwoliła zdarzenie powiodło się. 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
bit Tak
permission_bitmask W niektórych akcjach są to uprawnienia, które zostały przyznane, odrzucone lub odwołane. varbinary(16) Nie.
is_column_permission Flaga wskazująca, czy jest to uprawnienie na poziomie kolumny. Zwraca wartość 0, gdy permission_bitmask = 0.
- 1 = Prawda
- 0 = fałsz
bit Nie.
session_id Identyfikator sesji, w której wystąpiło zdarzenie. smallint Tak
server_principal_id Identyfikator kontekstu logowania, w ramach którego jest wykonywana akcja. Int Tak
database_principal_id Identyfikator kontekstu użytkownika bazy danych, w ramach którego jest wykonywana akcja. Zwraca wartość 0, jeśli nie ma to zastosowania. Na przykład operacja serwera. Int Nie.
target_server_principal_id Podmiot zabezpieczeń serwera, na podstawie którego jest wykonywana operacja GRANT/DENY/REVOKE. Zwraca wartość 0, jeśli nie ma zastosowania. Int Tak
target_database_principal_id Podmiot bazy danych, na którym wykonywana jest operacja GRANT/DENY/REVOKE. Zwraca wartość 0, jeśli nie ma zastosowania. Int Nie.
object_id Identyfikator jednostki, na której wystąpiła inspekcja. Obejmuje to następujące elementy:
obiekty serwera
Baz danych
obiekty bazy danych
obiekty schematu
Zwraca wartość 0, jeśli jednostka jest samym serwerem lub jeśli inspekcja nie jest wykonywana na poziomie obiektu. Na przykład uwierzytelnianie.
Int Nie.
class_type Typ jednostki podlegającej audytowi. varchar(2) Tak
session_server_principal_name Podmiot główny serwera dla sesji. sysname Tak
server_principal_name Bieżące logowanie. sysname Tak
server_principal_sid Bieżący identyfikator SID logowania. varbinary(85) Tak
database_principal_name Bieżący użytkownik. sysname Nie.
target_server_principal_name Docelowy login akcji. Zwraca wartość NULL, jeśli nie ma zastosowania. sysname Nie.
target_server_principal_sid Identyfikator SID docelowego logowania. Zwraca wartość NULL, jeśli nie ma zastosowania. varbinary(85) Nie.
target_database_principal_name Docelowy użytkownik akcji. Zwraca wartość NULL, jeśli nie ma zastosowania. sysname Nie.
server_instance_name Nazwa wystąpienia serwera, w którym wystąpiła inspekcja. Używany jest standardowy format serwera\wystąpienia. sysname Tak
database_name Kontekst bazy danych, w którym wystąpiła akcja. Nullable. Zwraca wartość NULL dla inspekcji występujących na poziomie serwera. sysname Nie.
schema_name Kontekst schematu, w którym wystąpiła akcja. sysname Nie.
object_name Nazwa jednostki, na której wystąpiła inspekcja. Obejmuje to następujące elementy:
obiekty serwera
Baz danych
obiekty bazy danych
obiekty schematu
Nullable. Zwraca wartość NULL, jeśli jednostka jest samym serwerem lub jeśli inspekcja nie jest wykonywana na poziomie obiektu. Na przykład uwierzytelnianie.
sysname Nie.
wypowiedź Instrukcja T-SQL, jeśli istnieje. Zwraca wartość NULL, jeśli nie ma zastosowania. nvarchar(4000) Nie.
additional_information Unikatowe informacje, które dotyczą tylko jednego zdarzenia, są zwracane jako XML. Kilka akcji podlegających inspekcji zawiera tego rodzaju informacje.

Jeden poziom stosu TSQL będzie wyświetlany w formacie XML dla akcji, które mają skojarzony stos TSQL. Format XML będzie następujący:
<tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>
Ramka nest_level wskazuje bieżący poziom zagnieżdżania ramki. Nazwa modułu jest reprezentowana w formacie trzyczęściowym (database_name, schema_name i object_name). Nazwa modułu zostanie przeanalizowana w celu uniknięcia nieprawidłowych znaków XML, takich jak '\<', '>', '/', . '_x' Zostaną one zakodowane jako _xHHHH\_. HHHH oznacza czterocyfrowy kod szesnastkowy UCS-2 dla znaku
Nullable. Zwraca wartość NULL, gdy nie ma dodatkowych informacji zgłoszonych przez zdarzenie.
nvarchar(4000) Nie.
file_name Ścieżka i nazwa pliku dziennika inspekcji, z którego pochodzi rekord. varchar(260) Tak
audit_file_offset Dotyczy: tylko program SQL Server

Przesunięcie buforu w pliku zawierającym rekord inspekcji.
bigint Nie.
user_defined_event_id Dotyczy: SQL Server 2012 (11.x) i nowsze, Azure SQL Database i SQL Managed Instance

Identyfikator zdarzenia zdefiniowanego przez użytkownika został przekazany jako argument sp_audit_write NULL dla zdarzeń systemowych (ustawienie domyślne) oraz wartość inna niż zero dla zdarzeń definiowanych przez użytkownika. Aby uzyskać więcej informacji, zobacz sp_audit_write (Transact-SQL).
smallint Nie.
informacje_zdefiniowane_przez_użytkownika Dotyczy: SQL Server 2012 (11.x) i nowsze, Azure SQL Database i SQL Managed Instance

Służy do rejestrowania wszelkich dodatkowych informacji, które użytkownik chce zarejestrować w logu dziennika inspekcji sp_audit_write przy użyciu procedury składowanej.
nvarchar(4000) Nie.
audit_schema_version Zawsze 1 Int Tak
sequence_group_id Dotyczy: tylko program SQL Server

Unikatowy identyfikator
varbinary(85) Nie.
transaction_id Dotyczy: tylko program SQL Server (począwszy od 2016 r.)

Unikatowy identyfikator identyfikujący wiele zdarzeń audytu w jednej transakcji
bigint Nie.
client_ip Dotyczy: Azure SQL Database + SQL Server (począwszy od 2017 r.)

Źródłowy adres IP aplikacji klienckiej
nvarchar(128) Nie.
application_name Dotyczy: Azure SQL Database + SQL Server (począwszy od 2017 r.)

Nazwa aplikacji klienckiej, która wykonała instrukcję, która spowodowała zdarzenie inspekcji
nvarchar(128) Nie.
duration_milliseconds Dotyczy: Azure SQL Database i SQL Managed Instance

Czas trwania wykonywania zapytania w milisekundach
bigint Nie.
response_rows Dotyczy: Azure SQL Database i SQL Managed Instance

Liczba wierszy zwróconych w zestawie wyników.
bigint Nie.
affected_rows Dotyczy: tylko usługa Azure SQL Database

Liczba wierszy, na które ma wpływ instrukcja wykonana.
bigint Nie.
connection_id Dotyczy: Azure SQL Database i SQL Managed Instance

Identyfikator połączenia na serwerze
GUID Nie.
informacje o wrażliwości danych Dotyczy: tylko usługa Azure SQL Database

Typy informacji i etykiety poufności zwracane przez zapytanie poddane audytowi na podstawie sklasyfikowanych kolumn w bazie danych. Dowiedz się więcej na temat odnajdywania i klasyfikacji danych usługi Azure SQL Database
nvarchar(4000) Nie.
host_name Nazwa hosta połączenia klienta nvarchar(128) Nie.
kontekst_sesji Informacje kontekstowe sesji dla połączenia nvarchar(4000) Nie.
client_tls_version Dotyczy: SQL Server 2022 i nowsze

Numer wersji protokołu TLS używany przez połączenie klienta
Int Nie.
client_tls_version_name Dotyczy: SQL Server 2022 i nowsze

Nazwa wersji protokołu TLS używana przez połączenie klienta
nvarchar(128) Nie.
database_transaction_id Identyfikator transakcji bazy danych bigint Nie.
ledger_start_sequence_number Dotyczy: SQL Server 2022 i nowsze

Numer początkowy sekwencji rejestru dla operacji księgowych
bigint Nie.
sprawdzone_zewnętrzne_uprawnienia_polityki Uprawnienia zasad zewnętrznych, które zostały sprawdzone podczas operacji nvarchar(4000) Nie.

Uwagi

Niektóre akcje nie wypełniają wartości kolumny, ponieważ może ona być nieodpowiednia dla danej akcji.

Program SQL Server Audit przechowuje 4000 znaków danych dla pól znaków w rekordzie inspekcji. Gdy wartości additional_information i oświadczenia zwrócone z akcji z możliwością inspekcji przekraczają 4000 znaków, kolumna sequence_number jest wykorzystywana do zapisywania wielu rekordów w raporcie audytowym dla pojedynczej akcji audytowej w celu zarejestrowania tych danych. Proces jest następujący:

  • Kolumna oświadczenia jest podzielona na 4 000 znaków.

  • Audit programu SQL Server zapisuje jako pierwszy wiersz rekordu audytu z częściowymi danymi. Wszystkie pozostałe pola są zduplikowane w każdym wierszu.

  • Wartość sequence_number jest zwiększana.

  • Ten proces jest powtarzany do momentu zarejestrowania wszystkich danych.

Dane można połączyć, odczytując wiersze sekwencyjnie przy użyciu wartości sequence_number oraz event_Time, action_id i session_id kolumn w celu zidentyfikowania akcji.