CREATE SERVER AUDIT (Transact-SQL)CREATE SERVER AUDIT (Transact-SQL)

SI APPLICA A: sìSQL Server sìDatabase SQL di Azure (solo Istanza gestita) noAzure SQL Data Warehouse noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure SQL Data Warehouse noParallel Data Warehouse

Viene creato un oggetto controllo del server utilizzando SQL ServerSQL Server Audit.Creates a server audit object using SQL ServerSQL Server Audit. Per altre informazioni, vedere SQL Server Audit (Motore di database).For more information, see SQL Server Audit (Database Engine).

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

CREATE SERVER AUDIT audit_name  
{  
    TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG | URL}  
    [ WITH ( <audit_options> [ , ...n ] ) ]   
    [ WHERE <predicate_expression> ]  
}  
[ ; ]  

<file_options>::=  
{  
        FILEPATH = 'os_file_path'  
    [ , MAXSIZE = { max_size { MB | GB | TB } | UNLIMITED } ]  
    [ , { MAX_ROLLOVER_FILES = { integer | UNLIMITED } } | { MAX_FILES = integer } ]  
    [ , RESERVE_DISK_SPACE = { ON | OFF } ]   
}  

<audit_options>::=  
{  
    [   QUEUE_DELAY = integer ]  
    [ , ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION } ]  
    [ , AUDIT_GUID = uniqueidentifier ]  
}  

<predicate_expression>::=  
{  
    [NOT ] <predicate_factor>   
    [ { AND | OR } [NOT ] { <predicate_factor> } ]   
    [,...n ]  
}  

<predicate_factor>::=   
    event_field_name { = | < > | ! = | > | > = | < | < = } { number | ' string ' }  

ArgomentiArguments

TO { FILE | APPLICATION_LOG | SECURITY_LOG | URLTO { FILE | APPLICATION_LOG | SECURITY_LOG | URL
Determina la posizione della destinazione del controllo.Determines the location of the audit target. Le opzioni possibili sono un file binario, il registro applicazioni di Windows o il registro di sicurezza di Windows.The options are a binary file, The Windows Application log, or the Windows Security log. SQL ServerSQL Server Se non si configurano impostazioni aggiuntive in Windows, non sarà possibile scrivere nel registro di sicurezza di Windows. cannot write to the Windows Security log without configuring additional settings in Windows. Per altre informazioni, vedere Scrivere eventi di controllo di SQL Server nel registro di sicurezza.For more information, see Write SQL Server Audit Events to the Security Log.

Importante

In Istanza gestita di database SQL di Azure, il controllo SQL opera a livello di server e archivia i file .xel in Archiviazione BLOB di Azure.In Azure SQL Database Managed Instance, SQL Audit works at the server level and stores .xel files in Azure blob storage.

FILEPATH ='os_file_path'FILEPATH ='os_file_path'
Percorso del log di controllo.The path of the audit log. Il nome del file viene generato in base al nome e al GUID del controllo.The file name is generated based on the audit name and audit GUID.

MAXSIZE = { max_size }MAXSIZE = { max_size }
Specifica le dimensioni massime consentite per il file di controllo.Specifies the maximum size to which the audit file can grow. max_size deve essere un valore intero seguito da MB, GB, TB, o UNLIMITED.The max_size value must be an integer followed by MB, GB, TB, or UNLIMITED. Il valore minimo che è possibile specificare per max_size è 2 MB, mentre il valore massimo è 2.147.483.647 TB.The minimum size that you can specify for max_size is 2 MB and the maximum is 2,147,483,647 TB. Se si specifica UNLIMITED, le dimensioni del file possono aumentare fino a quando non si esaurisce lo spazio su disco.When UNLIMITED is specified, the file grows until the disk is full. 0 indica UNLIMITED. Se si specifica un valore minore di 2 MB, viene generato l'errore MSG_MAXSIZE_TOO_SMALL.(0 also indicates UNLIMITED.) Specifying a value lower than 2 MB raises the error MSG_MAXSIZE_TOO_SMALL. Il valore predefinito è UNLIMITED.The default value is UNLIMITED.

MAX_ROLLOVER_FILES ={ integer | UNLIMITED }MAX_ROLLOVER_FILES ={ integer | UNLIMITED }
Indica il numero massimo di file da mantenere nel file system oltre al file corrente.Specifies the maximum number of files to retain in the file system in addition to the current file. Il valore MAX_ROLLOVER_FILES deve essere di tipo Integer o UNLIMITED.The MAX_ROLLOVER_FILES value must be an integer or UNLIMITED. Il valore predefinito è UNLIMITED.The default value is UNLIMITED. Questo parametro viene valutato ogni volta che il controllo viene riavviato (quando l'istanza del Motore di databaseDatabase Engine viene riavviata o quando il controllo viene disabilitato e quindi riabilitato) oppure quando è necessario un nuovo file perché è stato raggiunto il valore MAXSIZE.This parameter is evaluated whenever the audit restarts (which can happen when the instance of the Motore di databaseDatabase Engine restarts or when the audit is turned off and then on again) or when a new file is needed because the MAXSIZE has been reached. Quando MAX_ROLLOVER_FILES viene valutato, se il numero di file supera l'impostazione di MAX_ROLLOVER_FILES, viene eliminato il file meno recente.When MAX_ROLLOVER_FILES is evaluated, if the number of files exceeds the MAX_ROLLOVER_FILES setting, the oldest file is deleted. Di conseguenza, quando l'impostazione di MAX_ROLLOVER_FILES è 0, viene creato un nuovo file 0 ogni volta che l'impostazione di MAX_ROLLOVER_FILES viene valutata.As a result, when the setting of MAX_ROLLOVER_FILES is 0 a new file is created each time the MAX_ROLLOVER_FILES setting is evaluated. Un solo file viene eliminato automaticamente quando viene valutata l'impostazione di MAX_ROLLOVER_FILES, pertanto quando il valore di MAX_ROLLOVER_FILES viene ridotto, il numero di file non verrà ridotto, a meno che i file obsoleti non vengano eliminati manualmente.Only one file is automatically deleted when MAX_ROLLOVER_FILES setting is evaluated, so when the value of MAX_ROLLOVER_FILES is decreased, the number of files does not shrink unless old files are manually deleted. Il numero massimo di file specificabili è 2.147.483.647.The maximum number of files that can be specified is 2,147,483,647.

MAX_FILES =integerMAX_FILES =integer
Si applica a: SQL Server 2012 (11.x)SQL Server 2012 (11.x) tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

Viene specificato il numero massimo di file di controllo che possono essere creati.Specifies the maximum number of audit files that can be created. Quando si raggiunge il limite, non viene eseguito il rollover del primo file.Does not rollover to the first file when the limit is reached. Quando viene raggiunto il limite MAX_FILES, qualsiasi azione che causa la generazione di eventi di controllo aggiuntivi ha esito negativo e viene visualizzato un errore.When the MAX_FILES limit is reached, any action that causes additional audit events to be generated, fails with an error.

RESERVE_DISK_SPACE = { ON | OFF }RESERVE_DISK_SPACE = { ON | OFF }
Questa opzione consente di preallocare il file sul disco in base al valore MAXSIZE.This option pre-allocates the file on the disk to the MAXSIZE value. Viene applicata solo se MAXSIZE non è uguale a UNLIMITED.It applies only if MAXSIZE is not equal to UNLIMITED. Il valore predefinito è OFF.The default value is OFF.

QUEUE_DELAY =integerQUEUE_DELAY =integer
Specifica la quantità di tempo in millisecondi che può trascorrere prima che venga forzata l'esecuzione delle azioni di controllo.Determines the time, in milliseconds, that can elapse before audit actions are forced to be processed. Il valore 0 indica un recapito sincrono.A value of 0 indicates synchronous delivery. Il valore minimo di ritardo di query che è possibile impostare è 1000 (1 secondo). Tale valore è quello predefinito.The minimum settable query delay value is 1000 (1 second), which is the default. Il valore massimo è 2.147.483.647 (2.147.483,647 secondi o 24 giorni, 20 ore, 31 minuti e 23,647 secondi).The maximum is 2,147,483,647 (2,147,483.647 seconds or 24 days, 20 hours, 31 minutes, 23.647 seconds). Se si specifica un numero non valido, viene generato l'errore MSG_INVALID_QUEUE_DELAY.Specifying an invalid number, raises the MSG_INVALID_QUEUE_DELAY error.

ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION }ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION }
Viene indicato se l'istanza tramite cui viene effettuata l'operazione di scrittura nella destinazione deve comportare l'esito negativo, la continuazione o l'arresto di SQL ServerSQL Server qualora la destinazione non consenta di scrivere nel log di controllo.Indicates whether the instance writing to the target should fail, continue, or stop SQL ServerSQL Server if the target cannot write to the audit log. Il valore predefinito è CONTINUE.The default value is CONTINUE.

CONTINUECONTINUE
SQL ServerSQL Server Le operazioni di SQL Server continuano. operations continue. I record di controllo non vengono mantenuti.Audit records are not retained. Il controllo continua nel tentativo di registrare gli eventi e riprende se la condizione di errore viene risolta.The audit continues to attempt to log events and resumes if the failure condition is resolved. Scegliendo di continuare, è possibile consentire un'attività che non è controllata e che quindi potrebbe violare i criteri di sicurezza.Selecting the continue option can allow unaudited activity, which could violate your security policies. Utilizzare questa opzione quando il funzionamento del Motore di databaseDatabase Engine è più importante della gestione di un controllo completo.Use this option, when continuing operation of the Motore di databaseDatabase Engine is more important than maintaining a complete audit.

SHUTDOWNSHUTDOWN
Forza l'arresto dell'istanza di SQL ServerSQL Server se, per qualsiasi motivo, a SQL ServerSQL Server non è possibile scrivere i dati nella destinazione di controllo.Forces the instance of SQL ServerSQL Server to shut down, if SQL ServerSQL Server fails to write data to the audit target for any reason. L'account di accesso che esegue l'istruzione CREATE SERVER AUDIT deve avere l'autorizzazione SHUTDOWN in SQL ServerSQL Server.The login executing the CREATE SERVER AUDIT statement must have the SHUTDOWN permission within SQL ServerSQL Server. Il comportamento di arresto persiste anche se l'autorizzazione SHUTDOWN viene revocata in un secondo momento dall'account di accesso che esegue l'istruzione.The shutdown behavior persists even if the SHUTDOWN permission is later revoked from the executing login. Se l'utente non è in possesso di questa autorizzazione, l'istruzione ha esito negativo e il controllo non viene creato.If the user does not have this permission, then the statement fails and the audit is not be created. Utilizzare l'opzione quando un errore a livello di controllo potrebbe compromettere la sicurezza o l'integrità del sistema.Use the option when an audit failure could compromise the security or integrity of the system. Per altre informazioni, vedere SHUTDOWN.For more information, see SHUTDOWN.

FAIL_OPERATIONFAIL_OPERATION
Le azioni del database non vengono completate se provocano eventi controllati.Database actions fail if they cause audited events. Le azioni che non provocano eventi controllati possono continuare, ma non si verificano eventi controllati.Actions, which do not cause audited events can continue, but no audited events can occur. Il controllo continua nel tentativo di registrare gli eventi e riprende se la condizione di errore viene risolta.The audit continues to attempt to log events and resumes if the failure condition is resolved. Utilizzare questa opzione quando la gestione di un controllo completo è più importante dell'accesso completo al Motore di databaseDatabase Engine.Use this option when maintaining a complete audit is more important than full access to the Motore di databaseDatabase Engine.
Si applica a: SQL Server 2012 (11.x)SQL Server 2012 (11.x) tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

AUDIT_GUID =uniqueidentifierAUDIT_GUID =uniqueidentifier
Per supportare alcuni tipi di scenari, ad esempio il mirroring del database, a un controllo deve essere associato un GUID specifico corrispondente a quello presente nel database con mirroring.To support scenarios such as database mirroring, an audit needs a specific GUID that matches the GUID found in the mirrored database. Dopo che il controllo è stato creato, il GUID non può essere modificato.The GUID cannot be modified after the audit has been created.

predicate_expressionpredicate_expression
Si applica a: SQL Server 2012 (11.x)SQL Server 2012 (11.x) tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

Viene specificata l'espressione del predicato utilizzata per determinare se un evento deve essere o meno elaborato.Specifies the predicate expression used to determine if an event should be processed or not. Le espressioni del predicato possono essere composte da un massimo di 3000 caratteri, pertanto gli argomenti di tipo stringa risultano limitati.Predicate expressions are limited to 3000 characters, which limits string arguments.

event_field_nameevent_field_name
Si applica a: SQL Server 2012 (11.x)SQL Server 2012 (11.x) tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

Nome del campo relativo all'evento che consente di identificare l'origine del predicato.Is the name of the event field that identifies the predicate source. I campi del controllo sono descritti in sys.fn_get_audit_file (Transact-SQL).Audit fields are described in sys.fn_get_audit_file (Transact-SQL). È possibile filtrare tutti i campi eccetto file_name, audit_file_offset e event_time.All fields can be filtered except file_name, audit_file_offset, and event_time.

Nota

Mentre i campi action_id e class_type campi sono di tipo varchar in sys.fn_get_audit_file, possono essere usati solo con i numeri in caso di un'origine di predicato per il filtro.While the action_id and class_type fields are of type varchar in sys.fn_get_audit_file, they can only be used with numbers when they are a predicate source for filtering. Per ottenere l'elenco di valori da usare con class_type, eseguire la query seguente:To get the list of values to be used with class_type, execute the following query:

SELECT spt.[name], spt.[number]
FROM   [master].[dbo].[spt_values] spt
WHERE  spt.[type] = N'EOD'
ORDER BY spt.[name];

numbernumber
Si applica a: SQL Server 2012 (11.x)SQL Server 2012 (11.x) tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

Qualsiasi tipo numerico incluso decimal.Is any numeric type including decimal. Le limitazioni sono la mancanza di memoria fisica disponibile o un numero troppo grande per essere rappresentato come un numero intero a 64 bit.Limitations are the lack of available physical memory or a number that is too large to be represented as a 64-bit integer.

' string '' string '
Si applica a: SQL Server 2012 (11.x)SQL Server 2012 (11.x) tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

Stringa ANSI o Unicode come richiesto dal paragone del predicato.Either an ANSI or Unicode string as required by the predicate compare. Non viene eseguita alcuna conversione del tipo di stringa implicita per le funzioni del paragone del predicato.No implicit string type conversion is performed for the predicate compare functions. Il passaggio del tipo non corretto comporta un errore.Passing the wrong type results in an error.

RemarksRemarks

Quando viene creato un controllo del server, il relativo stato è disabilitato.When a server audit is created, it is in a disabled state.

L'istruzione CREATE SERVER AUDIT è nell'ambito di una transazione.The CREATE SERVER AUDIT statement is in a transaction's scope. L'esecuzione del rollback della transazione comporta il rollback anche per l'istruzione.If the transaction is rolled back, the statement is also rolled back.

PermissionsPermissions

Per creare, modificare o eliminare un controllo del server, le entità devono disporre dell'autorizzazione ALTER ANY SERVER AUDIT o CONTROL SERVER.To create, alter, or drop a server audit, principals require the ALTER ANY SERVER AUDIT or the CONTROL SERVER permission.

Quando si salvano informazioni di controllo in un file, per contribuire a impedirne l'alterazione, limitare l'accesso al percorso del file.When you are saving audit information to a file, to help prevent tampering, restrict access to the file location.

EsempiExamples

A.A. Creazione di un controllo del server con un file come destinazioneCreating a server audit with a file target

Nell'esempio seguente viene creato un controllo del server denominato HIPPA_Audit con un file binario come destinazione e nessuna opzione.The following example creates a server audit called HIPPA_Audit with a binary file as the target and no options.

CREATE SERVER AUDIT HIPAA_Audit  
    TO FILE ( FILEPATH ='\\SQLPROD_1\Audit\' );  

B.B. Creazione di un controllo del server con il registro applicazioni di Windows come destinazione e con opzioniCreating a server audit with a Windows Application log target with options

Nell'esempio seguente viene creato un controllo del server denominato HIPPA_Audit con il registro applicazioni di Windows come destinazione.The following example creates a server audit called HIPPA_Audit with the target set for the Windows Application log. Nella coda viene eseguita un'operazione di scrittura al secondo e il motore di SQL ServerSQL Server viene arrestato in caso di errore.The queue is written every second and shuts down the SQL ServerSQL Server engine on failure.

CREATE SERVER AUDIT HIPAA_Audit  
    TO APPLICATION_LOG  
    WITH ( QUEUE_DELAY = 1000,  ON_FAILURE = SHUTDOWN);  

C.C. Creazione di un controllo del server contenente una clausola WHERECreating a server audit containing a WHERE clause

Nell'esempio seguente vengono creati un database, uno schema e due tabelle per l'esempio.The following example creates a database, schema, and two tables for the example. Nella tabella denominata DataSchema.SensitiveData sono contenuti i dati riservati mentre l'accesso alla tabella deve essere registrato nel controllo.The table named DataSchema.SensitiveData contains confidential data and access to the table must be recorded in the audit. Nella tabella denominata DataSchema.GeneralData non sono contenuti dati riservati.The table named DataSchema.GeneralData does not contain confidential data. La specifica del controllo del database consente di controllare l'accesso a tutti gli oggetti nello schema DataSchema.The database audit specification audits access to all objects in the DataSchema schema. Il controllo del server viene creato con una clausola WHERE che consente di limitare il controllo del server solo alla tabella SensitiveData.The server audit is created with a WHERE clause that limits the server audit to only the SensitiveData table. Per il controllo del server si presuppone l'esistenza di una cartella del controllo in C:\SQLAudit.The server audit presumes an audit folder exists at C:\SQLAudit.

CREATE DATABASE TestDB;  
GO  
USE TestDB;  
GO  
CREATE SCHEMA DataSchema;  
GO  
CREATE TABLE DataSchema.GeneralData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);  
GO  
CREATE TABLE DataSchema.SensitiveData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);  
GO  
-- Create the server audit in the master database  
USE master;  
GO  
CREATE SERVER AUDIT AuditDataAccess  
    TO FILE ( FILEPATH ='C:\SQLAudit\' )  
    WHERE object_name = 'SensitiveData' ;  
GO  
ALTER SERVER AUDIT AuditDataAccess WITH (STATE = ON);  
GO  
-- Create the database audit specification in the TestDB database  
USE TestDB;  
GO  
CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]  
FOR SERVER AUDIT [AuditDataAccess]   
ADD (SELECT ON SCHEMA::[DataSchema] BY [public])  
WITH (STATE = ON);  
GO  
-- Trigger the audit event by selecting from tables  
SELECT ID, DataField FROM DataSchema.GeneralData;  
SELECT ID, DataField FROM DataSchema.SensitiveData;  
GO  
-- Check the audit for the filtered content  
SELECT * FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit',default,default);  
GO  

Vedere ancheSee Also

ALTER SERVER AUDIT (Transact-SQL) ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER AUDIT (Transact-SQL) DROP SERVER AUDIT (Transact-SQL)
CREATE SERVER AUDIT SPECIFICATION (Transact-SQL) CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
ALTER SERVER AUDIT SPECIFICATION (Transact-SQL) ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
DROP SERVER AUDIT SPECIFICATION (Transact-SQL) DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL) CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL) ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
DROP DATABASE AUDIT SPECIFICATION (Transact-SQL) DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL) ALTER AUTHORIZATION (Transact-SQL)
sys.fn_get_audit_file (Transact-SQL) sys.fn_get_audit_file (Transact-SQL)
sys.server_audits (Transact-SQL) sys.server_audits (Transact-SQL)
sys.server_file_audits (Transact-SQL) sys.server_file_audits (Transact-SQL)
sys.server_audit_specifications (Transact-SQL) sys.server_audit_specifications (Transact-SQL)
sys.server_audit_specification_details (Transact-SQL) sys.server_audit_specification_details (Transact-SQL)
sys.database_audit_specifications (Transact-SQL) sys.database_audit_specifications (Transact-SQL)
sys.database_audit_specification_details (Transact-SQL) sys.database_audit_specification_details (Transact-SQL)
sys.dm_server_audit_status (Transact-SQL) sys.dm_server_audit_status (Transact-SQL)
sys.dm_audit_actions (Transact-SQL) sys.dm_audit_actions (Transact-SQL)
sys.dm_audit_class_type_map (Transact-SQL) sys.dm_audit_class_type_map (Transact-SQL)
Creazione di un controllo del server e di una specifica del controllo del serverCreate a Server Audit and Server Audit Specification