CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Crea un objeto de especificación de auditoría de base de datos mediante la característica SQL Server Audit. Para más información, consulte SQL Server Audit (motor de base de datos).

Convenciones de sintaxis de Transact-SQL

Sintaxis

CREATE DATABASE AUDIT SPECIFICATION audit_specification_name  
{  
    FOR SERVER AUDIT audit_name   
        [ { ADD ( { <audit_action_specification> | audit_action_group_name } )   
      } [, ...n] ]  
    [ WITH ( STATE = { ON | OFF } ) ]  
}  
[ ; ]  
<audit_action_specification>::=  
{  
      action [ ,...n ]ON [ class :: ] securable BY principal [ ,...n ]  
}  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

audit_specification_name
Es el nombre de la especificación de auditoría.

audit_name
Es el nombre de la auditoría a la que se aplica esta especificación.

audit_action_specification
Es la especificación de acciones de elementos protegibles mediante entidades de seguridad que se deben grabar en la auditoría.

action
Es el nombre de una o varias acciones auditables en el nivel de base de datos. Para ver una lista de acciones de auditoría, vea Grupos de acciones y acciones de SQL Server Audit.

audit_action_group_name
Es el nombre de uno o varios grupos de acciones auditables en el nivel de base de datos. Para ver una lista de grupos de acciones de auditoría, vea Grupos de acciones y acciones de SQL Server Audit.

class
Es el nombre de clase (si procede) en el objeto protegible.

securable
Es la tabla, vista u otro objeto protegible de la base de datos al que se debe aplicar la acción de auditoría o el grupo de acciones de auditoría. Para más información, consulte Securables.

principal
Es el nombre de la entidad de seguridad de base de datos a la que se debe aplicar la acción de auditoría o el grupo de acciones de auditoría. Para auditar todas las entidades de seguridad de base de datos use la entidad de seguridad de base de datos public. Para más información, vea Entidades de seguridad (Motor de base de datos).

WITH ( STATE = { ON | OFF } )
Habilita o deshabilita la recopilación de registros por parte de la auditoría para esta especificación de auditoría.

Observaciones

Las especificaciones de auditoría de base de datos son objetos no protegibles que residen en una base de datos determinada. Cuando se crea una especificación de auditoría de servidor de base de datos, está en un estado deshabilitado.

Permisos

Los usuarios con el permiso ALTER ANY DATABASE AUDIT pueden crear especificaciones de auditoría de base de datos y enlazarlas a cualquier auditoría.

Después de crear una especificación de auditoría de base de datos, podrán verla los usuarios con el permiso CONTROL SERVER, o bien la cuenta sysadmin.

Ejemplos

A. Operaciones SELECT e INSERT de auditoría en una tabla para cualquier entidad de seguridad de base de datos

En el ejemplo siguiente se crea una auditoría de servidor denominada Payrole_Security_Audit y una especificación de auditoría de base de datos llamada Payrole_Security_Audit que audita las instrucciones SELECT y INSERT por cualquier miembro del rol de base de datos public, para la tabla HumanResources.EmployeePayHistory de la base de datos AdventureWorks2022. Esto tiene como consecuencia que se auditen todos los usuarios, ya que siempre son miembros del rol public.

USE master ;  
GO  
-- Create the server audit.  
CREATE SERVER AUDIT Payrole_Security_Audit  
    TO FILE ( FILEPATH =   
'D:\SQLAudit\' ) ;  -- make sure this path exists
GO  
-- Enable the server audit.  
ALTER SERVER AUDIT Payrole_Security_Audit   
WITH (STATE = ON) ;  
GO  
-- Move to the target database.  
USE AdventureWorks2022;  
GO  
-- Create the database audit specification.  
CREATE DATABASE AUDIT SPECIFICATION Audit_Pay_Tables  
FOR SERVER AUDIT Payrole_Security_Audit  
ADD (SELECT , INSERT  
     ON HumanResources.EmployeePayHistory BY public )  
WITH (STATE = ON) ;  
GO  

B. Auditoría de cualquier DML (INSERT, UPDATE o DELETE) en todos los objetos del esquema sales para un rol de base de datos específico

En el ejemplo siguiente se crea una auditoría de servidor denominada DataModification_Security_Audit y después una especificación de auditoría de base de datos denominada Audit_Data_Modification_On_All_Sales_Tables que audita las instrucciones INSERT, UPDATE y DELETE por los usuarios en un nuevo rol de base de datos SalesUK, para todos los objetos del esquema Sales de la base de datos AdventureWorks2022.

USE master ;  
GO  
-- Create the server audit.
-- Change the path to a path that the SQLServer Service has access to. 
CREATE SERVER AUDIT DataModification_Security_Audit  
    TO FILE ( FILEPATH = 
'D:\SQLAudit\' ) ;  -- make sure this path exists
GO  
-- Enable the server audit.  
ALTER SERVER AUDIT DataModification_Security_Audit   
WITH (STATE = ON) ;  
GO  
-- Move to the target database.  
USE AdventureWorks2022;  
GO  
CREATE ROLE SalesUK
GO
-- Create the database audit specification.  
CREATE DATABASE AUDIT SPECIFICATION Audit_Data_Modification_On_All_Sales_Tables  
FOR SERVER AUDIT DataModification_Security_Audit  
ADD ( INSERT, UPDATE, DELETE  
     ON Schema::Sales BY SalesUK )  
WITH (STATE = ON) ;    
GO  

Consulte también

CREATE SERVER AUDIT (Transact-SQL)
ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER AUDIT (Transact-SQL)
CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
sys.fn_get_audit_file (Transact-SQL)
sys.server_audits (Transact-SQL)
sys.server_file_audits (Transact-SQL)
sys.server_audit_specifications (Transact-SQL)
sys.server_audit_specification_details (Transact-SQL)
sys.database_audit_specifications (Transact-SQL)
sys.database_audit_specification_details (Transact-SQL)
sys.dm_server_audit_status (Transact-SQL)
sys.dm_audit_actions (Transact-SQL)
Crear una auditoría de servidor y una especificación de auditoría de servidor