SQL Server Audit Criando Auditoria no SQL Server

sql server audit

Primeiramente vamos criar uma tabela tabela_funcionários para testar a auditoria

CREATE TABLE TABELA_FUNCIONARIOS
(
ID INT IDENTITY,
NOME_FUNCIONARIO VARCHAR(80),
SALARIO_FUNCIONARIO VARCHAR(20)
)

SELECT * FROM TABELA_FUNCIONARIOS

INSERT INTO TABELA_FUNCIONARIOS
values
('Joao', 1000),
('Jose', 2000),
('Alexandre', 3000)

SELECT * FROM TABELA_FUNCIONARIOS

 

Criar o arquivo de auditoria a nível de servidor

USE [master]
GO
CREATE SERVER AUDIT [AUDIT_TABELA_FUNCIONARIOS]
TO FILE
( FILEPATH = N'C:\Auditoria'
,MAXSIZE = 0 MB
,MAX_ROLLOVER_FILES = 2147483647
,RESERVE_DISK_SPACE = OFF
)
WITH
( QUEUE_DELAY = 1000
,ON_FAILURE = CONTINUE
)

 

Criar a auditoria no Banco de Dados e indicar o que será auditado

USE [empresa]
GO
CREATE DATABASE AUDIT SPECIFICATION [DATABASE_AUDIT_TABELA_FUNCIONARIOS]
FOR SERVER AUDIT [AUDIT_TABELA_FUNCIONARIOS]

 

Indicar que será auditado

OBS: As três linhas indicam as três possíveis varições no nome da tabela.
ADD (SELECT ON OBJECT::[dbo].[TABELA_FUNCIONARIOS] BY [public]),
ADD (SELECT ON OBJECT::[TABELA_FUNCIONARIOS] BY [public]),
ADD (SELECT ON OBJECT::TABELA_FUNCIONARIOS BY [public]),

 

Caso queira excluir a auditoria

--drop DATABASE AUDIT SPECIFICATION [DATABASE_AUDIT_TABELA_FUNCIONARIOS]

 

Após criar a auditoria, é necessário ativá-la a nível de servidor

USE [empresa]
GO

ALTER SERVER AUDIT AUDIT_TABELA_FUNCIONARIOS
WITH (STATE = ON);
GO

 

Ativar a auditoria a nível de Banco de Dados

USE [empresa]
GO

ALTER DATABASE AUDIT SPECIFICATION [DATABASE_AUDIT_TABELA_FUNCIONARIOS]
WITH (STATE = ON)
GO

 

Testando a auditoria

SELECT * FROM [dbo].[TABELA_FUNCIONARIOS]
SELECT * FROM [TABELA_FUNCIONARIOS]
SELECT * FROM TABELA_FUNCIONARIOS

 

Realizando um UPDATE

UPDATE [dbo].[TABELA_FUNCIONARIOS] SET SALARIO_FUNCIONARIO = '1500' WHERE ID = '1'

 

Visualizando os LOGS

SELECT * FROM sys.fn_get_audit_file (N'C:\Auditoria\*',default,default);

 

Visualizando os LOGS com alguns filtros

SELECT
event_time 'horario',
database_name + '.' + schema_name + '.' + object_name 'objeto',
statement,
server_principal_name 'login',
session_server_principal_name 'user'
FROM sys.fn_get_audit_file (N'C:\Auditoria\*',default,default)
WHERE action_id = 'SL';

 

Se você deseja visualizar todas as auditorias existentes no Banco de Dados

select * from sys.server_audits

 

Caso queira mais informações sobre o assunto, segue alguns links