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

ESTE TÓPICO APLICA-SE AO: simSQL ServersimBanco de Dados SQL do Azure (somente Instância Gerenciada)nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL Database (Managed Instance only)noAzure SQL Data Warehouse noParallel Data Warehouse

Cria um objeto de auditoria de servidor por meio do SQL ServerSQL Server Audit.Creates a server audit object using SQL ServerSQL Server Audit. Para obter mais informações, veja Auditoria do SQL Server (Mecanismo de Banco de Dados).For more information, see SQL Server Audit (Database Engine).

Importante

Em gerenciados instância do banco de dados do SQL Azure, esse recurso de T-SQL tem determinadas alterações de comportamento.On Azure SQL Database Managed Instance, this T-SQL feature has certain behavior changes. Consulte diferenças do Azure SQL Database gerenciados instância T-SQL do SQL Server para obter detalhes de todas as alterações de comportamento de T-SQL.See Azure SQL Database Managed Instance T-SQL differences from SQL Server for details for all T-SQL behavior changes.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

CREATE SERVER AUDIT audit_name  
{  
    TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG }  
    [ 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 ' }  

ArgumentosArguments

TO { FILE | APPLICATION_LOG | SECURITY_LOG }TO { FILE | APPLICATION_LOG | SECURITY_LOG }
Determina o local do destino da auditoria.Determines the location of the audit target. As opções são um arquivo binário, o log do Aplicativo do Windows ou o log de Segurança do Windows.The options are a binary file, The Windows Application log, or the Windows Security log. SQL ServerSQL Server não poderá gravar no log de segurança do Windows se não forem definidas configurações adicionais no Windows. cannot write to the Windows Security log without configuring additional settings in Windows. Para obter mais informações, veja Gravar eventos de auditoria do SQL Server no log de segurança.For more information, see Write SQL Server Audit Events to the Security Log.

FILEPATH ='os_file_path'FILEPATH ='os_file_path'
O caminho do log de auditoria.The path of the audit log. O nome do arquivo é gerado com base no nome da auditoria e no GUID da auditoria.The file name is generated based on the audit name and audit GUID.

MAXSIZE = { max_size }MAXSIZE = { max_size }
Especifica o tamanho máximo até o qual o arquivo de auditoria pode crescer.Specifies the maximum size to which the audit file can grow. O valor de max_size deve ser um inteiro seguido de MB, GB, TB ou UNLIMITED.The max_size value must be an integer followed by MB, GB, TB, or UNLIMITED. O tamanho mínimo que você pode especificar para max_size é 2 MB e o máximo é 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. Quando UNLIMITED é especificado, o arquivo aumenta até que o disco esteja completo.When UNLIMITED is specified, the file grows until the disk is full. (0 também indica UNLIMITED.) A especificação de um valor inferior a 2 MB gera o erro MSG_MAXSIZE_TOO_SMALL.(0 also indicates UNLIMITED.) Specifying a value lower than 2 MB raises the error MSG_MAXSIZE_TOO_SMALL. O valor padrão é UNLIMITED.The default value is UNLIMITED.

MAX_ROLLOVER_FILES ={ integer | UNLIMITED }MAX_ROLLOVER_FILES ={ integer | UNLIMITED }
Especifica o número máximo de arquivos a serem retidos no sistema de arquivos além do arquivo atual.Specifies the maximum number of files to retain in the file system in addition to the current file. O valor MAX_ROLLOVER_FILES deve ser um inteiro ou UNLIMITED.The MAX_ROLLOVER_FILES value must be an integer or UNLIMITED. O valor padrão é UNLIMITED.The default value is UNLIMITED. Este parâmetro é avaliado sempre que a auditoria é reiniciada (o que pode ocorrer quando a instância do Mecanismo de Banco de DadosDatabase Engine é reiniciada ou quando a auditoria é desativada e, em seguida, reativada) ou quando um novo arquivo é necessário porque o valor máximo de MAXSIZE foi alcançado.This parameter is evaluated whenever the audit restarts (which can happen when the instance of the Mecanismo de Banco de DadosDatabase 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 é avaliado, se o número de arquivos excede a configuração de MAX_ROLLOVER_FILES, o arquivo mais antigo é excluído.When MAX_ROLLOVER_FILES is evaluated, if the number of files exceeds the MAX_ROLLOVER_FILES setting, the oldest file is deleted. Como resultado, quando a configuração de MAX_ROLLOVER_FILES é 0, um novo arquivo é criado sempre que a configuração de MAX_ROLLOVER_FILES é avaliada.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. Somente um arquivo é excluído automaticamente quando a configuração de MAX_ROLLOVER_FILES é avaliada. Portanto, quando o valor de MAX_ROLLOVER_FILES é reduzido, o número de arquivos não diminui, a menos que os arquivos antigos sejam excluídos 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. O número máximo de arquivos que pode ser especificado é 2.147.483.647.The maximum number of files that can be specified is 2,147,483,647.

MAX_FILES =integerMAX_FILES =integer
Aplica-se a: do SQL Server 2012 (11.x)SQL Server 2012 (11.x) ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

Especifica o número máximo de arquivos de auditoria que pode ser criado.Specifies the maximum number of audit files that can be created. Não substitui o primeiro arquivo quando o limite é atingido.Does not rollover to the first file when the limit is reached. Quando o limite de MAX_FILES é atingido, qualquer ação que causa a geração de eventos adicionais falha com um erro.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 }
Essa opção pré-aloca o arquivo no disco para o valor MAXSIZE.This option pre-allocates the file on the disk to the MAXSIZE value. Isso só valerá se MAXSIZE não for igual a UNLIMITED.It applies only if MAXSIZE is not equal to UNLIMITED. O valor padrão é OFF.The default value is OFF.

QUEUE_DELAY =integerQUEUE_DELAY =integer
Determina a hora, em milissegundos, que pode decorrer antes que o processamento das ações de auditoria seja forçado.Determines the time, in milliseconds, that can elapse before audit actions are forced to be processed. Um valor 0 indica entrega síncrona.A value of 0 indicates synchronous delivery. O valor mínimo de atraso de consulta configurável é 1000 (1 segundo), que é o padrão.The minimum settable query delay value is 1000 (1 second), which is the default. O máximo é 2.147.483.647 (2.147.483.647 segundos ou 24 dias, 20 horas, 31 minutos, 23.647 segundos).The maximum is 2,147,483,647 (2,147,483.647 seconds or 24 days, 20 hours, 31 minutes, 23.647 seconds). A especificação de um número inválido, gera o erro 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 }
Indica se a instância que grava no destino deverá falhar, continuar ou parar o SQL ServerSQL Server se o destino não puder gravar no log de auditoria.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. O valor padrão é CONTINUE.The default value is CONTINUE.

CONTINUECONTINUE
SQL ServerSQL Server As operações continuam. operations continue. Os registros de auditoria não são retidos.Audit records are not retained. A auditoria continua tentando registrar eventos em log e retoma se a condição de falha é resolvida.The audit continues to attempt to log events and resumes if the failure condition is resolved. A seleção da opção Continuar pode permitir atividades não auditadas, o que pode violar as políticas de segurança.Selecting the continue option can allow unaudited activity, which could violate your security policies. Use essa opção, quando continuar a operação do Mecanismo de Banco de DadosDatabase Engine é mais importante do que manter uma auditoria completa.Use this option, when continuing operation of the Mecanismo de Banco de DadosDatabase Engine is more important than maintaining a complete audit.

SHUTDOWNSHUTDOWN
Força a instância de SQL ServerSQL Server a ser desligada, caso o SQL ServerSQL Server não possa gravar dados no destino de auditoria por qualquer motivo.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. O logon que executa a instrução CREATE SERVER AUDIT deve ter a permissão SHUTDOWN no SQL ServerSQL Server.The login executing the CREATE SERVER AUDIT statement must have the SHUTDOWN permission within SQL ServerSQL Server. O comportamento de desligamento persiste mesmo se a permissão SHUTDOWN é revogada posteriormente do logon em execução.The shutdown behavior persists even if the SHUTDOWN permission is later revoked from the executing login. Se o usuário não tiver essa permissão, a instrução falhará e a auditoria não será criada.If the user does not have this permission, then the statement fails and the audit is not be created. Use a opção quando uma falha de auditoria puder comprometer a segurança ou a integridade do sistema.Use the option when an audit failure could compromise the security or integrity of the system. Para obter mais informações, consulte SHUTDOWN.For more information, see SHUTDOWN.

FAIL_OPERATIONFAIL_OPERATION
Haverá falha nas ações do banco de dados se elas provocarem eventos auditados.Database actions fail if they cause audited events. As ações que não causam eventos auditados podem continuar, mas nenhum evento auditado pode ocorrer.Actions, which do not cause audited events can continue, but no audited events can occur. A auditoria continua tentando registrar eventos em log e retoma se a condição de falha é resolvida.The audit continues to attempt to log events and resumes if the failure condition is resolved. Use essa opção, quando manter uma auditoria completa for mais importante do que o acesso total ao Mecanismo de Banco de DadosDatabase Engine.Use this option when maintaining a complete audit is more important than full access to the Mecanismo de Banco de DadosDatabase Engine.
Aplica-se a: do SQL Server 2012 (11.x)SQL Server 2012 (11.x) ao 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
Para dar suporte a cenários, como espelhamento de banco de dados, uma auditoria precisa de um GUID específico que corresponda ao GUID encontrado no banco de dados espelhado.To support scenarios such as database mirroring, an audit needs a specific GUID that matches the GUID found in the mirrored database. O GUID não pode ser modificado depois que a auditoria foi criada.The GUID cannot be modified after the audit has been created.

predicate_expressionpredicate_expression
Aplica-se a: do SQL Server 2012 (11.x)SQL Server 2012 (11.x) ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

Especifica a expressão de predicado usada para determinar se um evento deve ser processado ou não.Specifies the predicate expression used to determine if an event should be processed or not. As expressões de predicado são limitadas a 3.000 caracteres, o que limita os argumentos de cadeia de caracteres.Predicate expressions are limited to 3000 characters, which limits string arguments.

event_field_nameevent_field_name
Aplica-se a: do SQL Server 2012 (11.x)SQL Server 2012 (11.x) ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

É o nome do campo de evento que identifica a origem do predicado.Is the name of the event field that identifies the predicate source. Campos de auditoria são descritos em sys.fn_get_audit_file (Transact-SQL).Audit fields are described in sys.fn_get_audit_file (Transact-SQL). Todos os campos podem ser filtrados, exceto file_name, audit_file_offset e event_time.All fields can be filtered except file_name, audit_file_offset, and event_time.

Observação

Embora os campos action_id e class_type sejam do tipo varchar em sys.fn_get_audit_file, eles podem ser usados somente com números quando são uma origem de predicado para a filtragem.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. Para obter a lista de valores a serem usados com class_type, execute a seguinte consulta: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
Aplica-se a: do SQL Server 2012 (11.x)SQL Server 2012 (11.x) ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

É qualquer tipo numérico, incluindo decimal.Is any numeric type including decimal. Limitações são a falta de memória física disponível ou um número que é muito grande para ser representado como um inteiro de 64 bits.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 '
Aplica-se a: do SQL Server 2012 (11.x)SQL Server 2012 (11.x) ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

Uma cadeia de caracteres ANSI ou Unicode, conforme requerido pela comparação de predicado.Either an ANSI or Unicode string as required by the predicate compare. Nenhuma conversão de tipo de cadeia de caracteres implícita é executada para as funções de comparação de predicado.No implicit string type conversion is performed for the predicate compare functions. A transferência do tipo incorreto resulta em um erro.Passing the wrong type results in an error.

RemarksRemarks

Quando uma auditoria de servidor é criada, ela permanece em um estado desabilitado.When a server audit is created, it is in a disabled state.

A instrução CREATE SERVER AUDIT está no escopo de uma transação.The CREATE SERVER AUDIT statement is in a transaction's scope. Se a transação for revertida, a instrução também será revertida.If the transaction is rolled back, the statement is also rolled back.

PermissõesPermissions

Para criar, alterar ou descartar uma auditoria de servidor, as entidades devem ter a permissão ALTER ANY SERVER AUDIT ou CONTROL SERVER.To create, alter, or drop a server audit, principals require the ALTER ANY SERVER AUDIT or the CONTROL SERVER permission.

Quando você está salvando informações de auditoria em um arquivo, para ajudar a impedir falsificação, você pode restringir o acesso ao local do arquivo.When you are saving audit information to a file, to help prevent tampering, restrict access to the file location.

ExemplosExamples

A.A. Criando uma auditoria de servidor com um arquivo de destinoCreating a server audit with a file target

O exemplo a seguir cria uma auditoria de servidor denominada HIPPA_Audit com um arquivo binário como o destino e nenhuma opção.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. Criando uma auditoria de servidor com um destino de log de aplicativos do Windows com opçõesCreating a server audit with a Windows Application log target with options

O exemplo a seguir cria uma auditoria de servidor denominada HIPPA_Audit com o conjunto de destino para o log de aplicativos do Windows.The following example creates a server audit called HIPPA_Audit with the target set for the Windows Application log. A fila é gravada a cada segundo e o mecanismo do SQL ServerSQL Server é desligado em caso de falha.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. Criando uma auditoria de servidor que contém uma cláusula WHERECreating a server audit containing a WHERE clause

O exemplo a seguir cria um banco de dados, um esquema e duas tabelas para o exemplo.The following example creates a database, schema, and two tables for the example. A tabela chamada DataSchema.SensitiveData contém dados confidenciais e o acesso à tabela deve ser registrado na auditoria.The table named DataSchema.SensitiveData contains confidential data and access to the table must be recorded in the audit. A tabela denominada DataSchema.GeneralData não contém dados confidenciais.The table named DataSchema.GeneralData does not contain confidential data. A especificação de auditoria de banco de dados audita acesso a todos os objetos no esquema DataSchema.The database audit specification audits access to all objects in the DataSchema schema. A auditoria de servidor é criada com uma cláusula WHERE que limita a auditoria de servidor apenas à tabela SensitiveData.The server audit is created with a WHERE clause that limits the server audit to only the SensitiveData table. A auditoria de servidor supõe que exista uma pasta de auditoria em 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  

Consulte TambémSee 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)
Criar uma auditoria de servidor e uma especificação de auditoria de servidorCreate a Server Audit and Server Audit Specification