Erstellen eines benutzerdefinierten Sammlungssatzes, der einen generischen T-SQL-Abfragesammlertyp verwendet (Transact-SQL)
Sie können auch mithilfe der mit dem Datensammler bereitgestellten gespeicherten Prozeduren einen benutzerdefinierten Sammlungssatz mit Sammelelementen erstellen, die den generischen T-SQL-Abfragesammlertyp verwenden. Das Ausführen dieses Tasks umfasst 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 Sammlungssatzes
Definieren und Erstellen eines Auflistelements
Überprüfen, ob der Sammlungssatz und die Sammelelemente vorhanden sind.
![]() |
---|
Bevor Sie einen benutzerdefinierten Sammlungssatz erstellen, müssen Sie Datensammlungsparameter konfigurieren. Weitere Informationen finden Sie unter Konfigurieren von Parametern für die Datensammlung (Transact-SQL). |
Definieren und Erstellen des Sammlungssatzes
Definieren Sie mit der gespeicherten sp_syscollector_create_collection_set-Prozedur einen neuen Sammlungssatz.
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 auf 0 (zwischengespeichert) oder 1 (nicht zwischengespeichert) festgelegt werden.
Der Protokolliergrad kann auf 0, 1 oder 2 festgelegt werden.
Die folgenden vorkonfigurierten Zeitpläne werden mit dem Datensammler 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 Sammlungssatz verwenden. Weitere Informationen finden Sie unter Anlegen und Zuweisen von Zeitplänen zu Aufträgen.
Definieren und Erstellen eines Auflistelements
Da das neue Sammelelement auf einem generischen Sammlertyp basiert, der bereits installiert ist, können Sie den folgenden Code ausführen, um die GUID so festzulegen, dass Sie dem generischen T-SQL-Abfragesammlertyp entspricht.
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;
Erstellen Sie das Sammelelement mit der gespeicherten Prozedur sp_syscollector_create_collection_item. Deklarieren Sie das Schema für das Auflistelement so, dass es dem Schema zugeordnet wird, das für den generischen T-SQL-Abfragesammlertyp erforderlich ist.
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 Sammlungssatz und das Sammelelement vorhanden sind
Bevor Sie den neuen Sammlungssatz starten, führen Sie die folgende Abfrage aus, um zu überprüfen, dass der neue Sammlungssatz 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 erweitern Sie dann Datensammlung. Der neue Sammlungssatz wird angezeigt. Das rote Kreissymbol für den Sammlungssatz gibt an, dass der Sammlungssatz beendet wurde.
Beispiel
Im folgenden Codebeispiel werden die in den vorherigen Schritten dokumentierten Beispiele miteinander kombiniert. Beachten Sie, dass die für das Sammelelement festgelegte Auflistungshäufigkeit (5 Sekunden) ignoriert wird, da der Auflistungsmodus des Sammlungssatzes auf 0 festgelegt ist, was dem Modus mit Zwischenspeicherung entspricht. Weitere Informationen finden Sie unter 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
Siehe auch
Verweis
Gespeicherte Prozeduren für den Datensammler (Transact-SQL)