Rastreamento do SQL

Aplica-se a:SQL Server

No Rastreamento do SQL, são coletados eventos se estes forem instâncias de classes de evento listadas na definição de rastreamento. Esses eventos podem ser filtrados do rastreamento ou colocados na fila para seus destinos. O destino pode ser um arquivo ou o SQL Server Management Objects (SMO), que pode usar as informações de rastreamento em aplicativos que gerenciam o SQL Server.

Importante

Rastreamento do SQL e SQL Server Profiler estão preteridos. O namespace Microsoft.SqlServer.Management.Trace que contém os objetos Trace e Replay do Microsoft SQL Server também foi preterido.

Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.

Em vez disso, use Eventos Estendidos. Para obter mais informações sobre Eventos Estendidos, confira Início rápido: eventos estendidos no SQL Server e no SSMS XEvent Profiler.

Benefícios do Rastreamento do SQL

O Microsoft SQL Server fornece procedimentos armazenados do sistema Transact-SQL para criar rastreamentos em uma instância do Mecanismo de Banco de Dados do SQL Server. Esses procedimentos armazenados no sistema podem ser usados em seus próprios aplicativos para criar rastreamentos manualmente, em vez de usar o SQL Server Profiler. Isso lhe permite escrever aplicativos personalizados específicos às necessidades de sua empresa.

Arquitetura do Rastreamento do SQL

Origens de eventos podem ser qualquer origem que produza o evento de rastreamento, como lotes de Transact-SQL ou eventos do SQL Server, como deadlocks. Para obter mais informações sobre eventos, consulte SQL Server Event Class Reference. Quando ocorre um evento, se a classe de evento estiver incluída na definição de um rastreamento, serão coletadas informações sobre o evento. Se houver filtros definidos para a classe de evento na definição do rastreamento, eles serão aplicados e as informações do evento serão transmitidas a uma fila. Na fila, as informações de rastreamento são gravadas em um arquivo ou podem ser usadas pelo SMO em aplicativos, como o SQL Server Profiler. O diagrama a seguir mostra como o Rastreamento do SQL coleta eventos durante um rastreamento.

Database Engine event tracing process

Terminologia do Rastreamento do SQL

Os termos a seguir descrevem os conceitos fundamentais do Rastreamento do SQL.

Evento
A ocorrência de uma ação em uma instância do Mecanismo de Banco de Dados do Microsoft SQL Server.

Coluna de dados
Um atributo de um evento.

Classe de evento
Um tipo de evento que pode ser rastreado. A classe de evento contém todas as colunas de dados que podem ser informadas por um evento.

Categoria de eventos
Um grupo de classes de evento relacionadas.

Rastreamento (substantivo)
Uma coleção de eventos e dados retornados pelo Mecanismo de Banco de Dados.

Rastrear (verbo)
Para coletar e monitorar eventos em uma instância do SQL Server.

Tracedefinition
Uma coleção de classes de eventos, colunas de dados e filtros que identificam os tipos de evento a serem coletados durante um rastreamento.

Filter
Critérios que limitam os eventos coletados em um rastreamento.

Arquivo de rastreamento
Um arquivo criado quando um rastreamento é salvo.

Modelo
No SQL Server Profiler, um arquivo que define as classes de eventos e as colunas de dados a serem coletadas em um rastreamento.

Tabela de rastreamento
No SQL Server Profiler, uma tabela que é criada quando um rastreamento é salvo em uma tabela.

Use colunas de dados para descrever eventos retornados

O Rastreamento do SQL usa colunas de dados na saída de rastreamento para descrever os eventos retornados por sua execução. A tabela a seguir descreve as colunas de dados do SQL Server Profiler, que são as mesmas colunas de dados usadas pelo SQL Trace, e indica as colunas que são selecionadas por padrão.

Coluna de dados Column number Descrição
* ApplicationName 10 O nome do aplicativo cliente que criou a conexão com uma instância do SQL Server. Essa coluna é populada com os valores transmitidos pelo aplicativo e não com o nome do programa.
BigintData1 52 Valor (tipo de dadosbigint ) que depende da classe de evento especificada no rastreamento.
BigintData2 53 Valor (tipo de dadosbigint ) que depende da classe de evento especificada no rastreamento.
* Binary Data 2 Valor binário dependente da classe de evento capturada no rastreamento.
* ClientProcessID 9 A ID atribuída pelo computador host ao processo em que está sendo executado o aplicativo cliente. Essa coluna de dados será populada se a ID do processo do cliente for fornecida pelo cliente.
ColumnPermissions 44 Indica se uma permissão de coluna foi definida ou não. Você pode analisar o texto da instrução para determinar quais permissões foram aplicadas a quais colunas.
* CPU 18 O tempo de CPU (em milissegundos) usado pelo evento.
ID do banco de dados 3 A ID do banco de dados especificada pela instrução USE database_name ou a ID do banco de dados padrão se nenhuma instrução USE database_nametiver sido emitida para determinada instância. O SQL Server Profiler exibirá o nome do banco de dados se a coluna de dados ServerName for capturada no rastreamento e o servidor estiver disponível. Determine o valor para um banco de dados usando a função DB_ID.
DatabaseName 35 O nome do banco de dados no qual a instrução do usuário está sendo executada.
DBUserName 40 O nome de usuário do SQL Server do cliente.
* Duration 13 A duração do evento (em microssegundos).

O servidor relata a duração de um evento em microssegundos (um milionésimo de segundo ou 10-6segundo) e o tempo de CPU usado pelo evento em milissegundos (um milésimo de segundo ou 10-3segundo). A interface gráfica do usuário do SQL Server Profiler exibe a coluna Duration em milissegundos, por padrão; porém, quando um rastreamento é salvo em um arquivo ou tabela de banco de dados, o valor da coluna Duration é gravado em microssegundos.
* EndTime 15 A hora em que o evento terminou. Essa coluna não é populada para classes de evento que se referem a um evento que está sendo iniciado, como SQL:BatchStarting ou SP:Starting.
Erro 31 O número do erro de um determinado evento. Muitas vezes, é o número de erro armazenado na tabela sysmessages.
* EventClass 27 O tipo de classe de evento capturado.
EventSequence 51 Número de sequência para esse evento.
EventSubClass 21 O tipo de subclasse de evento, fornecendo mais informações sobre cada classe de evento. Por exemplo, valores de subclasse de evento para a classe de evento Execution Warning representam o tipo de aviso de execução:

1 = Espera da consulta. A consulta deve esperar por recursos para poder ser executada; por exemplo, memória.

2 = Tempo limite da consulta: a consulta atingiu o tempo limite enquanto aguardava a execução dos recursos necessários. Essa coluna de dados não é populada para todas as classes de evento.
GUID 54 Valor da GUID, que depende da classe de evento especificada no rastreamento.
FileName 36 O nome lógico do arquivo que é modificado.
Handle 33 O inteiro usado por ODBC, OLE DB ou DB-Library para coordenar execução de servidor.
HostName 8 O nome do computador no qual o cliente está sendo executado. Essa coluna de dados será populada se o nome do host for fornecido pelo cliente. Para determinar o nome do host, use a função HOST_NAME .
IndexID 24 A ID do índice no objeto afetado pelo evento. Para determinar a ID do índice de um objeto, use a coluna indid da tabela do sistema sysindexes .
IntegerData 25 Valor inteiro dependente da classe de evento capturada no rastreamento.
IntegerData2 55 Valor inteiro dependente da classe de evento capturada no rastreamento.
IsSystem 60 Indica se o evento ocorreu em um processo do sistema ou do usuário:

1 = sistema

0 = usuário
LineNumber 5 O número da linha que contém o erro. Para eventos que envolvem instruções Transact-SQL, como SP:StmtStarting, LineNumber contém o número da linha da instrução no procedimento armazenado ou no lote.
LinkedServerName 45 Nome do servidor vinculado.
* LoginName 11 Nome do logon do usuário (logon de segurança do SQL Server ou credenciais de logon do Windows na forma DOMÍNIO\Nome_de_usuário).
LoginSid 41 SID (identificador de segurança) do usuário que fez logon. Você pode encontrar estas informações na exibição sys.server_principals do banco de dados master . Cada logon no servidor tem uma ID exclusiva.
MethodName 47 Nome do método OLEDB.
Modo 32 O inteiro usado por vários eventos para descrever um estado que o evento está solicitando ou recebeu.
NestLevel 29 O inteiro que representa os dados retornados por @@NESTLEVEL.
NTDomainName 7 O domínio Microsoft Windows ao qual pertence o usuário.
* NTUserName 6 Nome de usuário no Windows.
ObjectID 22 ID do objeto atribuída pelo sistema.
ObjectID2 56 ID do objeto ou entidade relacionada, se disponível.
ObjectName 34 Nome do objeto referido.
**ObjectType 28 Valor que representa o tipo do objeto envolvido no evento. Este valor corresponde à coluna type em sysobjects.
Deslocamento 61 O deslocamento inicial da instrução no procedimento armazenado ou lote.
OwnerID 58 Apenas para eventos de bloqueio. O tipo do objeto que possui um bloqueio.
OwnerName 37 Nome de usuário de banco de dados do proprietário do objeto.
ParentName 59 O nome do esquema no qual reside o objeto.
Permissões 19 Valor inteiro que representa o tipo das permissões verificadas. Os valores são:

1 = SELECT ALL

2 = UPDATE ALL

4 = REFERENCES ALL

8 = INSERT

16 = DELETE

32 = EXECUTE (somente procedimentos)

4096 = SELECT ANY (pelo menos, uma coluna)

8192 = UPDATE ANY

16384 = REFERENCES ANY
ProviderName 46 Nome do provedor OLEDB.
* Reads 16 O número de operações de leitura no disco lógico que são executados pelo servidor em nome do evento. Compreendem todas as leituras de tabelas e buffers durante a execução da instrução.
RequestID 49 ID da solicitação que contém a instrução.
RoleName 38 O nome da função de aplicativo que está sendo habilitada.
RowCounts 48 O número de linhas no lote.
ServerName 26 O nome da instância do SQL Server que está sendo rastreada.
SessionLoginName 64 O nome de logon do usuário que originou a sessão. Por exemplo, se você se conectar ao SQL Server usando Login1 e executar uma instrução como Login2, SessionLoginName exibirá Login1, enquanto LoginName exibirá Login2. Essa coluna de dados exibe os logins do SQL Server e do Windows.
Gravidade 20 Nível de severidade do evento de exceção.
SourceDatabaseID 62 ID do banco de dados em que se encontra a origem do objeto.
* SPID 12 O ID do processo do servidor (SPID) que é atribuído pelo SQL Server ao processo associado ao cliente.
SqlHandle 63 Hash de 64 bits com base no texto de uma consulta ad hoc ou na ID de objeto e banco de dados de um objeto SQL. Esse valor pode ser passado a sys.dm_exec_sql_text() para recuperar o texto SQL associado.
* StartTime 14 O horário no qual o evento foi iniciado, quando disponível.
State 30 Código do estado de erro.
Êxito 23 Indica se o evento teve êxito ou não. Os valores são:

1 = Êxito.

0 = Falha

Por exemplo, 1 significa êxito em uma verificação de permissões e 0 , falha.
TargetLoginName 42 Em ações que visam um logon, é o nome do logon de destino; por exemplo, para adicionar um novo logon.
TargetLoginSid 43 Em ações que visam um logon, é a SID do logon de destino; por exemplo, para adicionar um novo logon.
TargetUserName 39 Em ações que visam um usuário de banco de dados, é o nome desse usuário; por exemplo, para conceder permissão a um usuário.
* TextData 1 Valor de texto dependente da classe de evento capturada no rastreamento. Porém, se você rastrear uma consulta parametrizada, as variáveis não serão exibidas com valores de dados na coluna TextData .
ID da Transação 4 ID da transação atribuída pelo sistema.
Tipo 57 Valor inteiro dependente da classe de evento capturada no rastreamento.
* Writes 17 O número de operações de gravação no disco físico que são executados pelo servidor em nome do evento.
XactSequence 50 Token usado para descrever a transação atual.

* Essas colunas de dados são preenchidas por padrão para todos os eventos.

** Para obter mais informações sobre a coluna de dados ObjectType, consulte Coluna de evento de rastreamento ObjectType.

Tarefas de Rastreamento do SQL

Descrição da tarefa Tópico
Descreve como criar e executar rastreamentos usando procedimentos armazenados de Transact-SQL. Criar e executar rastreamentos usando procedimentos armazenados de Transact-SQL
Descreve como criar rastreamentos manuais usando procedimentos armazenados em uma instância do Mecanismo de Banco de Dados do SQL Server. Criar rastreamentos manuais usando procedimentos armazenados
Descreve como salvar resultados de rastreamento no arquivo onde os resultados de rastreamento foram gravados. Salvar resultados de rastreamento em um arquivo
Descreve como melhorar o acesso a dados de rastreamento usando espaço no diretório temporário . Aprimorar o acesso aos dados de rastreamento
Descreve como usar procedimentos armazenados para criar um rastreamento. Criar um rastreamento (Transact-SQL)
Descreve como usar procedimentos armazenados para criar um filtro que recupera apenas as informações que você necessita em um evento que está sendo rastreado. Definir um filtro de rastreamento (Transact-SQL)
Descreve como usar procedimentos armazenados para modificar um rastreamento existente. Modificar um rastreamento existente (Transact-SQL)
Descreve como usar funções internas para exibir um rastreamento salvo. Exibir um rastreamento salvo (Transact-SQL)
Descreve como usar funções internas para exibir informações de filtro de rastreamento. Exibir informações de filtro (Transact-SQL)
Descreve como usar procedimentos armazenados para excluir um rastreamento. Excluir um rastreamento (Transact-SQL)
Descreve como minimizar os custos de desempenho devidos a um rastreamento. Otimizar o rastreamento do SQL
Descreve como filtrar um rastreamento para minimizar a sobrecarga incorrida durante um rastreamento. Filtrar um rastreamento
Descreve como minimizar a quantidade de dados que o rastreamento coleta. Limitar o tamanho de arquivos e tabelas do rastreamento
Descreve as duas maneiras de programar o rastreamento no Microsoft SQL Server. Agendar rastreamentos

Confira também

Modelos e permissões do SQL Server Profiler
Guia de Programação do SQL Server Management Objects (SMO)