Partilhar via


Tipo de coletor de rastreamento SQL genérico

O tipo de coletor de Rastreamento SQL Genérico usa o Rastreamento SQL para monitorar o Mecanismo Relacional do SQL Server. Os dados de rastreamento podem vir de um rastreamento padrão ou de um ou mais rastreamentos personalizados. Esse tipo de coletor é registrado na exibição core.supported_collector_types.

O rastreamento padrão, controlado por uma configuração de todo o servidor, é executado continuamente no servidor e captura eventos gerais de interesse. Esses eventos de interesse não estão relacionados à execução em lotes individual. Esse é um rastreamento de baixo impacto. Os rastreamentos personalizados podem coletar quaisquer eventos e podem ter impacto baixo ou alto, dependendo dos eventos selecionados e da atividade do servidor no momento em que o rastreamento é executado. Na maioria dos casos, os rastreamentos personalizados não são executados continuamente.

O tipo de coletor de Rastreamento SQL Genérico executa um rastreamento do lado do servidor que armazena dados em um arquivo ou em um conjunto de arquivos. Os dados de rastreamento são obtidos de arquivos de rastreamento com o uso da função de sistema fn_trace_gettable(). Se configurado para isso, o coletor processa os dados e os carrega no data warehouse de gerenciamento.

O tipo de coletor de Rastreamento SQL Genérico é configurado para remover arquivos não utilizados e manter uma quantidade fixa de espaço para dados de rastreamento armazenados.

Esquema de entrada de Rastreamento SQL genérico

O tipo de coletor de Rastreamento SQL Genérico usa o esquema a seguir para parâmetros de entrada.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="DataCollectorType">
  <xs:element name="SqlTraceCollector">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Events">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" maxOccurs="unbounded" name="EventType">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="Event">
                      <xs:complexType>
                        <xs:attribute name="id" type="xs:unsignedByte" use="required" />
                        <xs:attribute name="name" type="xs:string" use="required" />
                        <xs:attribute name="columnslist" type="xs:string" use="optional" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:unsignedByte" use="optional" />
                  <xs:attribute name="name" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Filters">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Filter" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:attribute name="columnid" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="columnname" type="xs:string" use="required" />
                  <xs:attribute name="logical_operator" type="xs:string" use="required" />
                  <xs:attribute name="comparison_operator" type="xs:string" use="required" />
                  <xs:attribute name="value" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="use_default" type="xs:boolean" />
    </xs:complexType>
  </xs:element>
</xs:schema>

Conforme mostrado no esquema, o tipo de coletor contém elementos fundamentais, parâmetros de procedimento armazenado e colunas especiais.

Elementos Key

  • A definição de rastreamento de entrada contém uma lista de eventos e uma lista de filtros que definem o rastreamento.

  • Os eventos são agrupados em um nó EventType que corresponde à Categoria de Evento no SQL Server Profiler.

  • Para o nó EventType, o atributo ID deve corresponder ao valor da exibição do sistema sys.trace_category. O atributo name é opcional.

  • Para o nó Event, o atributo ID deve corresponder ao valor da exibição do sistema sys.trace_events. O atributo nome é opcional.

  • As IDs são usadas ao gerar o script de início de rastreamento. Os nomes são usados para legibilidade e para renderização da definição de entrada na interface do usuário.

  • O nó Event contém os seguintes atributos:

    • ID, name. Explicado anteriormente.

    • columnslist. Uma lista separada por vírgula, de IDs de colunas a serem selecionadas para o evento. Se a columnslist não estiver especificada, todas as colunas desse evento serão incluídas.

  • O nó Filter define um filtro aplicado ao rastreamento. Os atributos têm estes significados:

    • columnid. ID de uma coluna à qual o filtro se aplica.

    • columnname. O nome da coluna identificado por columnid. Ele é usado para renderização.

    • logical_operator. Um operador a ser aplicado entre vários filtros na mesma coluna. Os valores permitidos são AND e OR.

    • comparison_operator. Um operador a ser aplicado entre a coluna e o valor do filtro. Os valores permitidos são: EQ, NE, GT, GE, LT, LE, LIKE e NOTLIKE.

    • value. O valor a ser usado para comparação. Observe que o valor do filtro e o operador de comparação devem corresponder ao tipo da coluna à qual o filtro se aplica. Por exemplo, se o tipo de coluna for string, somente os operadores "LIKE" e "NOTLIKE" poderão ser usados e somente valores de cadeia de caracteres serão aceitos para o valor do filtro.

Parâmetros de procedimento armazenado

Os parâmetros a seguir do procedimento armazenado sp_trace_create são definidos com base no conjunto de coleta ou nas opções de coletor.

  • @options. O rastreamento sempre é iniciado com a opção de substituição definida (TRACE_FILE_ROLLOVER).

  • @tracefile. O local dos arquivos de rastreamento é determinado pela variável CollectorTempDir. O nome do arquivo de rastreamento é gerado como uma concatenação de: "DataCollector_" + instanceName + CollectionSetUid + CollectionItemId + ".trc".

  • @maxfilesize. Ele é sempre definido como 5 megabytes (MB).

  • @stoptime. Não usado.

  • @filecount. Definido para se ajustar ao armazenamento temporário máximo permitido por conjunto de coleta (em MB). @filecount = limite de armazenamento/5.

Colunas especiais

Colunas adicionais são fornecidas para cada evento, mesmo que não sejam pré-selecionadas nos parâmetros de entrada deste evento. Essas colunas são:

  • StartTime

  • EndTime

  • EventSequence

  • SPID

As colunas precedentes identificam a origem do evento e habilitam a correlação do evento.

O exemplo de código a seguir ilustra o uso do esquema de entrada usado pelo tipo de coletor de Rastreamento SQL Genérico.

<?xml version="1.0" encoding="utf-8"?>

<ns:SqlTraceCollector xmlns:ns="DataCollectorType" normalize_sql="0" normalize_plans="0" normalize_procedures="0" normalize_connections="0" 
normalize_default="1">

<Events>
<EventType id ="6" name="Performance">
<Event id="58" name="Auto Stats"/>
<Event id="165" name="Performance statistics"/>
<Event id="146" name="Showplan XML Statistics Profile"/>
</EventType>
<EventType id="13" name="TSQL">
<Event id="12" name="SQL:BatchCompleted" columnslist="1, 3, 9, 10, 13, 16, 17, 18"/>
<Event id="13" name="SQL:BatchStarting"/>
<Event id="41" name="SQL:StmtCompleted"/>
<Event id="166" name="SQL:StmtRecompile"/>
</EventType>
<EventType id="20" name="CLR">
<Event id="196" name="Assembly Load"/>
</EventType>
<EventType id="1" name="Cursors">
<Event id="53" name="CursorOpen"/>
<Event id="75" name="CursorRecompile"/>
<Event id="76" name="CursorImplicitConversion"/>
<Event id="78" name="CursorClose"/>
</EventType>
</Events>

<Filters>
<Filter columnid="13" columnname="Duration" logical_operator="AND" comparison_operator="GE" value="1000L"/>
<Filter columnid="10" columnname="ApplicationName" logical_operator="AND" comparison_operator="LIKE" value="Data Collector"/>
<Filter columnid="10" columnname="ApplicationName" logical_operator="AND" comparison_operator="EQ" value="NULL"/>
<Filter columnid="18" columnname="CPU" logical_operator="AND" comparison_operator="EQ" value="20"/>
<Filter columnid="14" columnname="StartTime" logical_operator="AND" comparison_operator="GT" value="2007-02-09 13:40:00"/>
</Filters>

</ns:SqlTraceCollector>

Processamento e saída

Esta versão do tipo de coletor de Rastreamento SQL Genérico dá suporte ao carregamento de dados de rastreamento completo que processa eventos capturados no rastreamento padrão do servidor.

Carregamento de dados de rastreamento completo

Com esse tipo de carregamento de dados, os dados de rastreamento são carregados sem qualquer processamento em uma única tabela que contém todas as colunas de rastreamento possíveis. Os dados de vários rastreamentos podem ser carregados na mesma tabela, o que facilita a mesclagem dos dados. Além dos dados de rastreamento, um snapshot_id é acrescentado a cada linha, possibilitando a identificação da fonte de dados de rastreamento e a hora do rastreamento.

Os benefícios fornecidos por um carregamento de dados de rastreamento completo incluem o seguinte:

  • Há uma maneira simples de obter dados de rastreamento do servidor em um banco de dados em que eles podem ser facilmente consultados e processados adicionalmente, sem a necessidade de abrir o rastreamento no SQL Server Profiler.

  • Os dados de vários rastreamentos podem ser mesclados e correlacionados.

  • Não há perda de dados do rastreamento original. Tudo que foi capturado é retido.

  • As ferramentas existentes, como o SQL Server Profiler, podem ser usadas para procurar os dados.

Esquema de destino

O esquema de destino é definido como uma tabela que captura detalhes sobre os rastreamentos armazenados no data warehouse de gerenciamento, e uma tabela usada para armazenar todos os eventos dos rastreamentos. Os dados de rastreamento são armazenados nas tabelas do data warehouse de gerenciamento a seguir:

  • snapshots.trace_info. Esta tabela contém informações sobre todos os rastreamentos que foram carregados na instância do warehouse.

  • snapshots.trace_data. Esta tabela contém os dados capturados por todos os rastreamentos. Ela define uma coluna para cada coluna de rastreamento possível. Armazenar os dados de rastreamento dessa maneira permite que o coletor de dados insira dados na tabela da mesma forma como quando ele são provenientes da função do sistema fn_trace_gettable(). Também permite que a tabela seja carregada diretamente no SQL Server Profiler.

Para obter mais informações sobre essas tabelas, consulte Data warehouse de gerenciamento.