A criação de scripts para fazer um rastreamento no lado do servidor pode ser uma tarefa complexa e está além do escopo deste documento. Esta seção contém amostras de scripts que é possível usar como exemplos. Assim como em um rastreamento no lado do cliente, o objetivo é criar um arquivo de workload ou uma tabela de rastreamento que você pode abrir usando o Orientador de Otimização do Mecanismo de Banco de Dados.
Veja a seguir um script de exemplo resumido iniciado no lado do servidor e que captura detalhes de rastreamento para um arquivo de workload. Inicialmente, o rastreamento é salvo no arquivo, que fica no diretório D:\RDSDBDATA\Log RDSTrace.trc, e é renovado a cada 100 MB. Assim, os arquivos de rastreamento subsequentes são chamados RDSTrace_1.trc, RDSTrace_2.trc etc.
DECLARE @file_name NVARCHAR(245) = 'D:\RDSDBDATA\Log\RDSTrace';
DECLARE @max_file_size BIGINT = 100;
DECLARE @on BIT = 1
DECLARE @rc INT
DECLARE @traceid INT
EXEC @rc = sp_trace_create @traceid OUTPUT, 2, @file_name, @max_file_size
IF (@rc = 0) BEGIN
EXEC sp_trace_setevent @traceid, 10, 1, @on
EXEC sp_trace_setevent @traceid, 10, 2, @on
EXEC sp_trace_setevent @traceid, 10, 3, @on
. . .
EXEC sp_trace_setfilter @traceid, 10, 0, 7, N'SQL Profiler'
EXEC sp_trace_setstatus @traceid, 1
END
O exemplo a seguir é um script que interrompe um rastreamento. Observe que um rastreamento criado pelo script anterior continuará a ser executado até que seja explicitamente interrompido ou até que o processo fique sem espaço em disco.
DECLARE @traceid INT
SELECT @traceid = traceid FROM ::fn_trace_getinfo(default)
WHERE property = 5 AND value = 1 AND traceid <> 1
IF @traceid IS NOT NULL BEGIN
EXEC sp_trace_setstatus @traceid, 0
EXEC sp_trace_setstatus @traceid, 2
END
É possível salvar os resultados do rastreamento no lado do servidor em uma tabela de banco de dados e usar essa como a workload do Orientador de Otimização com a função fn_trace_gettable. Os comandos a seguir carregam os resultados de todos os arquivos chamados RDSTrace.trc no diretório D:\rdsdbdata\Log RDSTrace.trc, inclusive todos os arquivos subsequentes como RDSTrace_1.trc, em uma tabela chamada RDSTrace no banco de dados atual.
SELECT * INTO RDSTrace
FROM fn_trace_gettable('D:\rdsdbdata\Log\RDSTrace.trc', default);
Para salvar um arquivo subsequente específico em uma tabela (por exemplo o RDSTrace_1.trc), especifique o nome do arquivo e substitua default pelo número 1 como o último parâmetro para fn_trace_gettable.
SELECT * INTO RDSTrace_1
FROM fn_trace_gettable('D:\rdsdbdata\Log\RDSTrace_1.trc', 1);