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”.
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.
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;
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.
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
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”.
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!