Rastreamento do SQL

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 SMO (SQL Server Management Objects), que pode usar as informações do rastreamento em aplicativos que gerenciam o SQL Server.

Observação importanteImportante

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

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 do sistema podem ser usados nos 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

As Origens do Evento podem ser quaisquer origens que produzam o evento de rastreamento, tais como lotes Transact-SQL ou então eventos do SQL Server, como deadlocks. Para obter mais informações sobre eventos, consulte Referência de classe de evento do SQL Server. 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. Da fila, as informações do rastreamento serão gravadas em um arquivo ou poderão ser usadas pelo SMO em aplicativos, tais como o SQL Server Profiler. O diagrama a seguir mostra como o Rastreamento do SQL coleta eventos durante um rastreamento.

Processo de rastreamento de eventos do Mecanismo de Banco de Dados

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 dentro de uma instância do Microsoft Mecanismo de Banco de Dados do 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 evento
    Um grupo de classes de evento relacionadas.

  • Rastreamento
    Uma coleção de eventos e dados retornado pelo Mecanismo de Banco de Dados.

  • Rastrear
    Coletar e monitorar eventos em uma instância do SQL Server.

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

  • Filtro
    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 evento e colunas de dados a serem coletadas em um rastreamento.

  • Tabela de rastreamento
    No SQL Server Profiler, uma tabela 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 usadas pelo Rastreamento do SQL, e indica as colunas selecionadas por padrão.

Coluna de dados

Número da coluna

Descrição

ApplicationName 1

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 dados bigint ) que depende da classe de evento especificada no rastreamento.

BigintData2

53

Valor (tipo de dados bigint ) que depende da classe de evento especificada no rastreamento.

Binary Data

2

Valor binário dependente da classe de evento capturada no rastreamento.

ClientProcessID 1

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.

Database ID 1

3

A ID do banco de dados especificado pela instrução USE database_name ou o a ID do banco de dados padrão se nenhuma instrução USE database_nametiver sido emitida para uma determinada instância. O SQL Server Profiler exibirá o nome do banco de dados se a coluna de dados Server Name for capturada no rastreamento e o servidor estiver disponível. Determine o valor de 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 1

40

Nome de usuário do cliente no SQL Server.

Duration

13

A duração do evento (em microssegundos).

ObservaçãoObservação

No SQL Server 2005 ou versões posteriores, o servidor informa a duração de um evento em microssegundos (um milionésimo de segundo ou 10-6 segundo) e o tempo de CPU usado pelo evento em milissegundos (um milésimo de segundo ou 10-3 segundo). No SQL Server 2005 ou versões posteriores, 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 milissegundos.

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.

Error

31

O número do erro de um determinado evento. Muitas vezes, é o número de erro armazenado na tabela sysmessages.

EventClass 1

27

O tipo de classe de evento capturado.

EventSequence

51

Número de sequência desse evento.

EventSubClass 1

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 de consulta. A consulta deve esperar por recursos para poder ser executada; por exemplo, memória.

2 = Tempo limite de consulta. A espera da consulta por recursos para sua execução atingiu o tempo limite. 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 1

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. No caso de eventos que envolvem instruções Transact-SQL, como SP:StmtStarting, LineNumber contém o número de linha da instrução no procedimento armazenado ou 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 1

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 mestre. 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 1

7

O domínio Microsoft Windows ao qual pertence o usuário.

NTUserName 1

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 2

28

Valor que representa o tipo do objeto envolvido no evento. Este valor corresponde à coluna type em sysobjects.

Offset

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 (apenas 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 1

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 irá exibir Login1, enquanto que LoginName exibirá Login2. Esta coluna de dados exibe logons tanto do SQL Server, quanto do Windows.

Severity

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

ID de processo de servidor (SPID) atribuída 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 transmitido a sys.dm_exec_sql_text() para recuperar o texto SQL associado.

StartTime 1

14

A hora em que o evento foi iniciado, quando disponível.

State

30

Código do estado de erro.

Success

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.

1 Essas colunas de dados são populadas, por padrão, em todos os eventos.

2 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 de rastreamento

Descreve os dois modos de agendar rastreamento no Microsoft SQL Server.

Agendar rastreamentos

Consulte também

Outros recursos

Modelos e permissões do SQL Server Profiler

Guia de Programação do SQL Server Management Objects (SMO)