Creare un set di raccolta personalizzato che usa il tipo agente di raccolta Query T-SQL generico

Si applica a:SQL Server

È possibile creare un set di raccolta personalizzato con elementi della raccolta che utilizzano il tipo di agente di raccolta Query T-SQL generico tramite le stored procedure fornite con l'agente di raccolta dati. Il completamento di questa attività comporta l'utilizzo dell'editor di query in SQL Server Management Studio per eseguire le procedure descritte di seguito:

  • Configurazione delle pianificazioni di caricamento
  • Definizione e creazione del set di raccolta
  • Definizione e creazione di un elemento dell'insieme
  • Verifica dell'esistenza del set di raccolta e degli elementi della raccolta

Prima di creare un set di raccolta personalizzato è necessario configurare i parametri della raccolta dati. Per altre informazioni, vedere Configurazione dei parametri per la raccolta dati (Transact-SQL).

Definizione e creazione del set di raccolta

  1. Definire un nuovo set di raccolta usando la stored procedure 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;
    

    È possibile impostare la modalità di raccolta su 0 (in cache) o su 1 (non in cache).

    Il livello di registrazione può essere impostato su 0, 1 o 2.

    Le seguenti pianificazioni preconfigurate vengono fornite con l'agente di raccolta dati:

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

    Se non si desidera utilizzare una delle pianificazioni fornite è possibile creare una nuova pianificazione e utilizzarla per il set di raccolta. Per altre informazioni, vedere Creare e collegare le pianificazioni ai processi.

Definizione e creazione di un elemento dell'insieme

  1. Poiché il nuovo elemento dell'insieme è basato su un tipo di agente di raccolta generico già installato, è possibile eseguire il codice seguente per impostare il GUID in modo che corrisponda al tipo di agente di raccolta Query T-SQL generico.

    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. Utilizzare la stored procedure sp_syscollector_create_collection_item per creare l'elemento dell'insieme. Dichiarare lo schema per l'elemento dell'insieme in modo che ne venga eseguito il mapping allo schema richiesto per il tipo di agente di raccolta Query T-SQL generico.

    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;
    

Verifica dell'esistenza del nuovo set di raccolta a dell'elemento dell'insieme

  1. Prima di avviare il nuovo set di raccolta, eseguire la query seguente per verificare che il nuovo set di raccolta e l'elemento dell'insieme siano stati creati.

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

    È anche possibile eseguire un controllo visivo in SQL Server Management Studio. In Esplora oggetti espandere il nodo Gestione , quindi Raccolta dati. Viene visualizzato il nuovo set di raccolta. L'icona con il cerchio rosso per il set di raccolta indica che quest'ultimo è arrestato.

Esempi

Nell'esempio di codice seguente vengono combinati gli esempi documentati nei passaggi precedenti. La frequenza di raccolta impostata per l'elemento dell'insieme (5 secondi) viene ignorata, poiché la modalità di raccolta del set di raccolta è impostata su 0 (modalità cache). Per altre informazioni, vedere Raccolta di dati.

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