Поделиться через


Создание настраиваемого набора коллекций — универсальный тип сборщика запросов T-SQL

Область применения: SQL Server

Можно создать пользовательский набор сбора с элементами, которые будут использовать тип сборщика «Универсальный запрос T-SQL» с помощью хранимых процедур, поставляемых вместе со сборщиком данных. Для выполнения этой задачи необходимо использовать Редактор запросов в SQL Server Management Studio для выполнения следующих процедур:

  • Настройка расписаний отправки
  • Определение и создание набора элементов сбора
  • Определение и создание элемента сбора
  • Убедитесь, что набор коллекций и элементы коллекции существуют

Перед созданием пользовательского набора сбора необходимо настроить параметры сбора данных. Дополнительные сведения см. в разделе "Настройка параметров сбора данных" (Transact-SQL).

Определение и создание набора элементов сбора

  1. Определите новый набор коллекций с помощью хранимой 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;
    

    Режим сбора можно задать как (кэшированный), так 0 и 1 (не кэшированный).

    Для уровня ведения журнала можно задать 0значение , 1или 2.

    Следующие предварительно настроенные расписания поставляются со сборщиком данных.

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

    Если вы не хотите использовать одно из указанных расписаний, можно создать новое расписание и использовать его для набора коллекций. Дополнительные сведения см. в разделе Создание и присоединение расписаний к заданиям.

Определение и создание элемента сбора

  1. Поскольку новый элемент сбора создан на базе универсального типа сборщика, который уже установлен, можно выполнить следующий код, чтобы изменить его идентификатор GUID для соответствия типу «Универсальный сборщик запросов T-SQL».

    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. Используйте хранимую sp_syscollector_create_collection_item процедуру для создания элемента коллекции. Объявите схему для элемента сбора, чтобы он был сопоставлен со схемой, необходимой для типа сборщика «Универсальный запрос T-SQL».

    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;
    

Проверка существования набора сбора и элемента сбора

  1. Перед запуском нового набора коллекций выполните следующий запрос, чтобы убедиться, что создается новый набор коллекций и его элемент коллекции.

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

    Вы также можете выполнить визуальную проверку в SQL Server Management Studio. В обозревателе объектов разверните узел Управление , затем узел Сбор данных. Отображается новый набор коллекций. Красный круглый кружок на значке набора сбора означает, что набор сбора остановлен.

Примеры

В следующем образце кода объединены примеры, приведенные в предыдущих шагах. Частота сбора, заданная для элемента коллекции (5 секунд), игнорируется, так как для режима сбора набора коллекций задано значение 0, которое кэшируется в режиме кэширования. Дополнительные сведения см. в разделе "Сбор данных".

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