Freigeben über


Vorgehensweise: Erstellen eines benutzerdefinierten Auflistsatzes, der einen generischen T-SQL-Abfrageauflistertyp verwendet

Sie können einen benutzerdefinierten Auflistsatz mit Auflistelementen erstellen, der den generischen T-SQL-Abfrageauflistertyp mithilfe der gespeicherten Prozeduren verwendet, die mit dem Datenauflister bereitgestellt werden. Das Ausführen dieses Tasks beinhaltet die Verwendung des Abfrage-Editors in SQL Server Management Studio, um die folgenden Vorgänge durchzuführen:

  • Konfigurieren von Uploadzeitplänen.

  • Definieren und Erstellen des Auflistsatzes.

  • Definieren und Erstellen eines Auflistelements.

  • Überprüfen, ob der Auflistsatz und die Auflistelemente vorhanden sind.

HinweisHinweis

Bevor Sie einen benutzerdefinierten Auflistsatz erstellen, müssen Sie Datenauflistungsparameter konfigurieren. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren von Parametern für die Datenauflistung.

Definieren und Erstellen des Auflistsatzes

  • Definieren Sie mit der gespeicherten Prozedur sp_syscollector_create_collection_set einen neuen Auflistsatz.

    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
    

    Der Auflistmodus kann entweder auf 0 (mit Zwischenspeicherung) oder 1 (ohne Zwischenspeicherung) festgelegt werden.

    Die Protokollstufe kann auf 0, 1 oder 2 festgelegt werden. Weitere Informationen zu Protokollierungsstufen finden Sie unter Datensammlerprotokollierung.

    Die folgenden vorkonfigurierten Zeitpläne werden mit dem Datenauflister bereitgestellt:

    • CollectorSchedule_Every_5min

    • CollectorSchedule_Every_10min

    • CollectorSchedule_Every_15min

    • CollectorSchedule_Every_30min

    • CollectorSchedule_Every_60min

    • CollectorSchedule_Every_6h

    Wenn Sie keinen der bereitgestellten Zeitpläne verwenden möchten, können Sie einen neuen Zeitplan erstellen und für den Auflistsatz verwenden. Weitere Informationen finden Sie unter Anlegen und Zuweisen von Zeitplänen zu Aufträgen.

Definieren und Erstellen eines Auflistelements

  1. Da das neue Auflistelement auf einem bereits installierten generischen Auflistertyp basiert, können Sie den folgenden Code ausführen, um festzulegen, dass die GUID mit dem generischen T-SQL-Abfrageauflistertyp übereinstimmt.

    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. Verwenden Sie die gespeicherte Prozedur sp_syscollector_create_collection_item, um das Auflistelement zu erstellen. Deklarieren Sie das Schema für das Auflistelement so, dass es dem für den generischen T-SQL-Abfrageauflistertyp erforderlichen Schema zugeordnet wird.

    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
    

Überprüfen, ob der neue Auflistsatz und das Auflistelement vorhanden sind

  • Bevor Sie den neuen Auflistsatz starten, führen Sie die folgende Abfrage aus, um zu überprüfen, ob der neue Auflistsatz und sein Auflistelement erstellt wurden.

    USE msdb
    SELECT * FROM syscollector_collection_sets
    SELECT * FROM syscollector_collection_items
    GO
    

    Sie können auch eine visuelle Prüfung in SQL Server Management Studio durchführen. Erweitern Sie im Objekt-Explorer den Knoten Verwaltung und dann Datenauflistung. Der neue Auflistsatz wird angezeigt. Der rote Kreis im Symbol für den Auflistsatz gibt an, dass der Auflistsatz beendet wurde.

Beispiel

Im folgenden Codebeispiel werden die in den vorherigen Schritten dokumentierten Beispiele kombiniert. Beachten Sie, dass die für das Auflistelement festgelegte Auflistungshäufigkeit (5 Sekunden) ignoriert wird, da der Auflistungsmodus des Auflistsatzes auf 2 festgelegt ist. Dies entspricht dem Modus mit Zwischenspeicherung. Weitere Informationen finden Sie unter Terminologie zur Datensammlung.

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