Condividi tramite


Procedura: Creazione di un insieme di raccolta personalizzato che utilizza il tipo di agente di raccolta Query T-SQL generico

È possibile creare un insieme 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 dell'insieme di raccolta.

  • Definizione e creazione di un elemento della raccolta.

  • Verifica dell'esistenza dell'insieme di raccolta e degli elementi della raccolta.

[!NOTA]

Prima di creare un insieme di raccolta personalizzato è necessario configurare i parametri della raccolta dati. Per ulteriori informazioni, vedere Procedura: Configurazione dei parametri per la raccolta dati.

Definizione e creazione dell'insieme di raccolta

  • Definire un nuovo insieme di raccolta utilizzando la stored procedure sp_syscollector_create_collection_set.

    USE msdb
    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. Per ulteriori informazioni sui livelli di registrazione, vedere Registrazione dell'agente di raccolta dati.

    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 l'insieme di raccolta. Per ulteriori informazioni, vedere Creazione e collegamento di pianificazioni ai processi.

Definizione e creazione di un elemento della raccolta

  1. Poiché il nuovo elemento della raccolta è 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 della raccolta. Dichiarare lo schema per l'elemento della raccolta in modo tale che verrà mappato 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 insieme di raccolta a dell'elemento della raccolta

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

    USE msdb
    SELECT * FROM syscollector_collection_sets
    SELECT * FROM syscollector_collection_items
    GO
    

    È anche possibile effettuare un controllo visivo in SQL Server Management Studio. In Esplora oggetti espandere il nodo Gestione, quindi Raccolta dati. Verrà visualizzato il nuovo insieme di raccolta. L'icona con il cerchio rosso per l'insieme di raccolta indica che quest'ultimo è interrotto.

Esempio

Nell'esempio di codice seguente vengono combinati gli esempi documentati nei passaggi precedenti. Si noti che la frequenza di raccolta impostata per l'elemento della raccolta (5 secondi) viene ignorata, poiché la modalità di raccolta dell'insieme di raccolta è impostata su 0 (modalità cache). Per ulteriori informazioni, vedere Terminologia relativa alla raccolta dati.

USE msdb;

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