Condividi tramite


Record di SQL Server Audit

Si applica a:SQL Server

La funzionalità di SQL Server Audit consente di controllare gruppi di eventi ed eventi a livello di server e di database. Per altre informazioni, vedere SQL Server Audit (Motore di database). SQL Server.

I controlli sono costituiti da zero o più attività di controllo, che vengono registrate in una destinazionedel controllo. La destinazione del controllo può essere un file binario, il registro eventi applicazioni di Windows o il registro eventi di sicurezza di Windows. I record inviati alla destinazione possono contenere gli elementi descritti nella tabella seguente:

Nome colonna Descrizione Tipo Sempre disponibile
event_time Data e ora in cui viene attivata l'azione controllabile. datetime2
sequence_number Viene tenuta traccia della sequenza dei record all'interno di un singolo record di controllo con dimensioni troppo elevate per il buffer di scrittura dei controlli. int
action_id ID dell'azione.

Suggerimento: per usare action_id come predicato, è necessario convertirlo da stringa di caratteri in valore numerico. Per altre informazioni, vedere Filter SQL Server Audit on action_id / class_type predicate(Filtro di SQL Server Audit con il predicato action_id / class_type).
varchar(4)
succeeded Indica se l'azione che ha attivato l'evento è riuscita. Per tutti gli eventi diversi dagli eventi di accesso, questo segnala solo se il controllo delle autorizzazioni è riuscito o non è riuscito, non l'operazione.
- 1 = Esito positivo
- 0 = Errore
bit
permission_bitmask In alcune azioni si tratta delle autorizzazioni concesse, negate o revocate. varbinary(16) No
is_column_permission Flag che indica se si tratta di un'autorizzazione a livello di colonna. Restituisce 0 quando il permission_bitmask = 0.
- 1 = Vero
- 0 = Falso
bit No
session_id ID della sessione in cui si è verificato l'evento. smallint
server_principal_id ID del contesto dell'account di accesso utilizzato per eseguire l'azione. int
database_principal_id ID del contesto dell'utente del database in cui viene eseguita l'azione. Restituisce 0 se non si applica. Ad esempio, un'operazione del server. int No
target_server_principal_id Entità server su cui viene eseguita l'operazione GRANT/DENY/REVOKE. Restituisce 0 se non applicabile. int
target_database_principal_id L'entità di database su cui viene eseguita l'operazione GRANT/DENY/REVOKE. Restituisce 0 se non applicabile. int No
object_id ID dell'entità in cui si è verificato il controllo. Ciò include:
oggetti server
database
oggetti di database
oggetti dello schema
Restituisce 0 se l'entità è il server stesso o se il controllo non viene eseguito a livello di oggetto. Ad esempio, Autenticazione.
int No
class_type Tipo di entità controllabile su cui si verifica il controllo. varchar(2)
session_server_principal_name Entità server per la sessione. sysname
server_principal_name Account di accesso corrente. sysname
server_principal_sid SID dell'account di accesso corrente. varbinary(85)
database_principal_name Utente corrente. sysname No
target_server_principal_name Account di accesso di destinazione dell'azione. Restituisce NULL se non applicabile. sysname No
target_server_principal_sid SID dell'account di accesso di destinazione. Restituisce NULL se non applicabile. varbinary(85) No
target_database_principal_name Utente di destinazione dell'azione. Restituisce NULL se non applicabile. sysname No
server_instance_name Nome dell'istanza del server in cui si è verificato il controllo. Viene usato il formato server\istanza standard. sysname
database_name Contesto del database in cui si è verificata l'azione. Nullable. Restituisce NULL per i controlli che si verificano a livello di server. sysname No
schema_name Contesto dello schema in cui si è verificata l'azione. sysname No
object_name Nome dell'entità in cui si è verificato il controllo. Ciò include:
oggetti server
database
oggetti di database
oggetti dello schema
Nullable. Restituisce NULL se l'entità è il server stesso o se il controllo non viene eseguito a livello di oggetto. Ad esempio, Autenticazione.
sysname No
statement Istruzione TSQL, se esistente. Restituisce NULL se non applicabile. nvarchar(4000) No
additional_information Le informazioni univoche valide solo per un singolo evento vengono restituite come XML. Alcune azioni controllabili contengono questo tipo di informazioni.

Un livello dello stack TSQL verrà visualizzato in formato XML per le azioni associate allo stack TSQL. Il formato XML sarà:
<tsql_stack><frame nest_level = '%u' database_name = '%.*s' schema_name = '%.*s' object_name = '%.*s' /></tsql_stack>
Frame nest_level indica il livello di annidamento corrente del frame. Il nome del modulo è rappresentato in tre parti (database_name, schema_name e object_name). Il nome del modulo verrà analizzato per eseguire l'escape di caratteri XML non validi, ad esempio '\<', '>''/', . '_x' Verranno preceduti da escape come _xHHHH\_. HHHH è l'acronimo del codice UCS-2 a quattro cifre per il carattere
Nullable. Restituisce NULL quando non sono presenti informazioni aggiuntive segnalate dall'evento.
nvarchar(4000) No
file_name Percorso e nome del file di log di controllo da cui proviene il record. varchar(260)
audit_file_offset Si applica a: solo SQL Server

Offset del buffer nel file che contiene il record di controllo.
bigint No
user_defined_event_id Si applica a: SQL Server 2012 (11.x) e versioni successive, database SQL di Azure e Istanza gestita di SQL

ID evento definito dall'utente passato come argomento a sp_audit_writeNULL per gli eventi di sistema (impostazione predefinita) e diverso da zero per l'evento definito dall'utente. Per altre informazioni, vedere sp_audit_write (Transact-SQL).
smallint No
user_defined_information Si applica a: SQL Server 2012 (11.x) e versioni successive, database SQL di Azure e Istanza gestita di SQL

Utilizzato per registrare eventuali informazioni aggiuntive che l'utente desidera registrare nel log di controllo usando la sp_audit_write stored procedure.
nvarchar(4000) No
audit_schema_version Sempre 1 int
sequence_group_id Si applica a: solo SQL Server

Identificatore univoco
varbinary(85) No
transaction_id Si applica a: solo SQL Server (a partire dalla versione 2016)

Identificatore univoco per identificare più eventi di controllo in una transazione
bigint No
client_ip Si applica a: Database SQL di Azure + SQL Server (a partire dalla versione 2017)

IP di origine dell'applicazione client
nvarchar(128) No
application_name Si applica a: Database SQL di Azure + SQL Server (a partire dalla versione 2017)

Nome dell'applicazione client che ha eseguito l'istruzione che ha causato l'evento di controllo
nvarchar(128) No
duration_milliseconds Si applica a: Database SQL di Azure e Istanza gestita di SQL

Durata dell'esecuzione delle query in millisecondi
bigint No
response_rows Si applica a: Database SQL di Azure e Istanza gestita di SQL

Numero di righe restituite nel set di risultati.
bigint No
affected_rows Si applica a: solo database SQL di Azure

Numero di righe interessate dall'istruzione eseguita.
bigint No
connection_id Si applica a: Database SQL di Azure e Istanza gestita di SQL

ID della connessione nel server
GUID No
data_sensitivity_information Si applica a: solo database SQL di Azure

Tipi di informazioni ed etichette di riservatezza restituiti dalla query controllate, in base alle colonne classificate nel database. Altre informazioni sull'individuazione e la classificazione dei dati del database SQL di Azure
nvarchar(4000) No
host_name Nome host della connessione client nvarchar(128) No
session_context Informazioni sul contesto della sessione per la connessione nvarchar(4000) No
client_tls_version Si applica a: SQL Server 2022 e versioni successive

Numero di versione TLS usato dalla connessione client
int No
client_tls_version_name Si applica a: SQL Server 2022 e versioni successive

Nome della versione TLS usato dalla connessione client
nvarchar(128) No
database_transaction_id Identificatore della transazione di database bigint No
ledger_start_sequence_number Si applica a: SQL Server 2022 e versioni successive

Numero di sequenza iniziale del libro mastro per le operazioni del libro mastro
bigint No
external_policy_permissions_checked Autorizzazioni dei criteri esterni controllate durante l'operazione nvarchar(4000) No

Note

Alcune azioni non popolano il valore di una colonna perché potrebbero non essere utilizzabili per l'azione.

SQL Server Audit archivia 4.000 caratteri di dati per i campi di tipo carattere in un record di controllo. Quando i valori di additional_information e istruzione restituiti da un'azione controllabile restituiscono più di 4000 caratteri, la colonna sequence_number viene usata per scrivere più record nel report di controllo per registrare questi dati. Passaggi del processo:

  • La colonna dell'istruzione è suddivisa in 4.000 caratteri.

  • SQL Server Audit scrive i dati parziali come prima riga del record di controllo. Tutti gli altri campi vengono duplicati in ogni riga.

  • Il valore sequence_number viene incrementato.

  • Questo processo viene ripetuto fino a registrare tutti i dati.

È possibile connettere i dati leggendo le righe in sequenza usando il valore sequence_number e le colonne event_Time, action_id e session_id per identificare l'azione.