Uma instancia do SQL Server tem um “default trace” habilitado por padrão. Ele foi introduzido no SQL Server 2005. Existem até 5 arquivos (com a extensão “TRC”) que totalizam até 20 MBs de tamanho. Ao chegar no limite os arquivos são sobrescritos.
O “default trace” fornece um log de rastreamento com os dados necessários para diagnosticar alguns problemas. É possível visualizar o rastreamento através da ferramenta de profiler ou T-SQL.

Primeiro devemos verificar se a opção de “default trace” está habilitada, temos 2 formas de fazer isso, a primeira é utilizar a tabela de sistema “sys.configurations”, como segue:

SELECT name, value
FROM sys.configurations
WHERE configuration_id= 1568;

Acima executamos um select na tabela “sys.configurations” com o filtro da configuração de “default trace enabled”.

defaultTrace1

A imagem acima mostra que o recurso está desabilitado. Também podemos utilizar a store procedure “sp_configure” para verificar se o “default trace” está habilitado

sp_configure 'default trace enabled'

Devemos verificar o valor da coluna “run_value”, 0 significa que está desabilitado e 1 para habilitado.

defaultTrace1.

Habilitar default trace

Para habilitar devemos executar:

sp_configure 'default trace enabled', 1
RECONFIGURE

Acima habilitamos o recurso de “default trace”.

Obter caminho do arquivo de default trace

Para obter o caminho vamos ver 2 exemplos:

SELECT * FROM sys.traces;

defaultTrace3

Acima temos o caminho físico do arquivo de “default trace”, e também podemos obter da seguinte forma:

SELECT value FROM sys.fn_trace_getinfo(0) WHERE property = 2;

Com esse “SELECT” acima, obtemos o mesmo caminho.

defaultTrace4

Obter dados de rastreamento

Depois de obter o caminho do arquivo trace, podemos visualizar os eventos, como segue:

SELECT TextData, SPID, LoginName, NTUserName, NTDomainName, HostName, ApplicationName, StartTime, ServerName, DatabaseName, EventClass, ObjectType
FROM fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\log_61.trc', default);

Ao executarmos o “SELECT” acima devemos obter o seguinte resultado

defaultTrace5jpg

Se atente a coluna “EventClass”, ela nos informará o tipo de comando executado, como: DROP, ALTER, CREATE, etc. E a coluna “ObjectType” também deve ser observada, para saber o tipo de objeto do banco de dados.
Olhe a tabela BOL no MSDN http://msdn.microsoft.com/en-us/library/ms186265.aspx, para saber o evento relacionado com o número da coluna “EventClass”, no link também é possível a descrição das colunas de “fn_trace_gettable”.

Ao criar e deletar uma tabela do banco de dados como exemplo temos:

CREATE TABLE produto (id INT);
DROP TABLE produto;

SELECT SPID, LoginName, NTUserName, NTDomainName, HostName, ApplicationName, StartTime, ServerName, DatabaseName, EventClass, ObjectType, ObjectName
FROM fn_trace_gettable('C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\log_61.trc', default)

Ao executar os comandos acima, descobriremos que o usuário “sa” criou e deletou a tabela “produto”, já que o “EventClass” 46 é para “Object:Created”, e 47 é “Object:Deleted”.

defaultTrace6

O “default trace” também nos da condição de verificar auto crescimento do banco, atualização de estáticas de índices, e muito mais (veja no link do MSDN).

Até a próxima pessoal!