Criar conjunto de coleta personalizado – Tipo de coletor de consultas T-SQL genérico

Aplica-se a:SQL Server

É possível criar um conjunto de coleta personalizado com itens de coleta que usam o tipo de coletor de Consultas T-SQL Genérico, usando os procedimentos armazenados fornecidos com o coletor de dados. A realização dessa tarefa envolve o uso do Editor de Consultas no SQL Server Management Studio para aplicar os procedimentos a seguir:

  • Configurar agendamentos de upload
  • Definir e criar o conjunto de coleta
  • Definir e criar um item de coleta
  • Verificar se o conjunto de coleta e os itens da coleção existem

Antes de criar um conjunto de coleta personalizado, configure os parâmetros da coleta de dados. Para obter mais informações, consulte Configurar parâmetros de coleta de dados (Transact-SQL).

Definir e criar o conjunto de coleta

  1. Defina um novo conjunto de coleta ao usar o procedimento armazenado sp_syscollector_create_collection_set.

    USE msdb;
    GO
    
    DECLARE @collection_set_id INT;
    DECLARE @collection_set_uid UNIQUEIDENTIFIER;
    
    EXEC sp_syscollector_create_collection_set @name = N'DMV Test 1',
        @collection_mode = 0,
        @description = N'This is a test collection set',
        @logging_level = 1,
        @days_until_expiration = 14,
        @schedule_name = N'CollectorSchedule_Every_15min',
        @collection_set_id = @collection_set_id OUTPUT,
        @collection_set_uid = @collection_set_uid OUTPUT;
    
    SELECT @collection_set_id, @collection_set_uid;
    

    O modo de coleta pode ser definido como 0 (armazenado em cache) ou 1 (não armazenado em cache).

    O nível de registros em log pode ser definido como 0, 1 ou 2.

    As agendas pré-configuradas a seguir são fornecidas com o coletor de dados:

    • CollectorSchedule_Every_5min
    • CollectorSchedule_Every_10min
    • CollectorSchedule_Every_15min
    • CollectorSchedule_Every_30min
    • CollectorSchedule_Every_60min
    • CollectorSchedule_Every_6h

    Se não desejar usar um dos agendamentos fornecidos, você poderá criar um novo agendamento e usá-lo para o conjunto de coleta. Para obter mais informações, veja Criar e anexar agendamentos a trabalhos.

Definir e criar um item de coleta

  1. Como o novo item de coleta é baseado em um tipo de coletor genérico já instalado, você pode executar o código a seguir para definir o GUID que corresponde ao tipo de coletor de Consultas T-SQL Genérico.

    DECLARE @collector_type_uid UNIQUEIDENTIFIER;
    
    SELECT @collector_type_uid = collector_type_uid
    FROM [msdb].[dbo].[syscollector_collector_types]
    WHERE name = N'Generic T-SQL Query Collector Type';
    
    DECLARE @collection_item_id INT;
    
  2. Use o procedimento armazenado sp_syscollector_create_collection_item para criar o item da coleção. Declare o esquema do item de coleta para que ele seja mapeado para o esquema exigido para o tipo de coletor de Consultas T-SQL Genérico.

    EXEC sp_syscollector_create_collection_item @name = N'Query Stats - Test 1',
        @parameters = N'
            <ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
            <Query>
            <Value>SELECT * FROM sys.dm_exec_query_stats</Value>
            <OutputTable>dm_exec_query_stats</OutputTable>
            </Query>
            </ns:TSQLQueryCollector>',
        @collection_item_id = @collection_item_id OUTPUT,
        @frequency = 5,
        @collection_set_id = @collection_set_id,
        @collector_type_uid = @collector_type_uid;
    
    SELECT @collection_item_id;
    

Verificar se o novo conjunto de coleta e o item de coleta existem

  1. Antes de dar início ao novo conjunto de coleta, realize a execução da consulta a seguir para verificar se o novo conjunto de coleta e o item da coleção foram criados.

    USE msdb;
    GO
    
    SELECT * FROM syscollector_collection_sets;
    SELECT * FROM syscollector_collection_items;
    GO
    

    Você também pode fazer uma verificação visual no SQL Server Management Studio. No Pesquisador de Objetos, expanda o nó Gerenciamento e expanda Coleta de Dados. O novo conjunto de coleta é exibido. O ícone de círculo vermelho do conjunto de coleta indica que o conjunto de coleta está parado.

Exemplos

O exemplo de código a seguir combina os exemplos documentados nas etapas anteriores. A frequência de coleção que está configurada para o item da coleção (cinco segundos) é ignorada porque o modo de coleta do conjunto de coleta está configurado como 0, que corresponde ao modo armazenado em cache. Para obter mais informações, consulte Coleção de dados.

USE msdb;
GO

DECLARE @collection_set_id INT;
DECLARE @collection_set_uid UNIQUEIDENTIFIER;

EXEC dbo.sp_syscollector_create_collection_set @name = N'DMV Stats Test 1',
    @collection_mode = 0,
    @description = N'This is a test collection set',
    @logging_level = 1,
    @days_until_expiration = 14,
    @schedule_name = N'CollectorSchedule_Every_15min',
    @collection_set_id = @collection_set_id OUTPUT,
    @collection_set_uid = @collection_set_uid OUTPUT;

SELECT @collection_set_id, @collection_set_uid;

DECLARE @collector_type_uid UNIQUEIDENTIFIER;

SELECT @collector_type_uid = collector_type_uid
FROM syscollector_collector_types
WHERE name = N'Generic T-SQL Query Collector Type';

DECLARE @collection_item_id INT;

EXEC sp_syscollector_create_collection_item @name = N'Query Stats - Test 1',
    @parameters = N'
    <ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
    <Query>
      <Value>select * from sys.dm_exec_query_stats</Value>
      <OutputTable>dm_exec_query_stats</OutputTable>
    </Query>
    </ns:TSQLQueryCollector>',
    @collection_item_id = @collection_item_id OUTPUT,
    @frequency = 5, -- This parameter is ignored in cached mode
    @collection_set_id = @collection_set_id,
    @collector_type_uid = @collector_type_uid;

SELECT @collection_item_id;
GO