sp_syscollector_update_collection_item (Transact-SQL)

Применимо к:SQL Server

Служит для изменения свойств или переименования определяемого пользователем элемента сбора.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_syscollector_update_collection_item
    [ [ @collection_item_id = ] collection_item_id ]
    [ , [ @name = ] N'name' ]
    [ , [ @new_name = ] N'new_name' ]
    [ , [ @frequency = ] frequency ]
    [ , [ @parameters = ] N'parameters' ]
[ ; ]

Аргументы

[ @collection_item_id = ] collection_item_id

Уникальный идентификатор, определяющий элемент коллекции. @collection_item_id имеет значение int с значением по умолчаниюNULL. @collection_item_id должно иметь значение, если @nameNULL.

[ @name = ] N'name'

Имя элемента сбора. @name имеет имя sysname с значением по умолчаниюNULL. @name должно иметь значение, если @collection_item_idNULL.

[ @new_name = ] N'new_name'

Новое имя элемента коллекции. @new_name имеет имя sysname с значением по умолчанию NULLи, если используется, не может быть пустой строкой.

@new_name должен быть уникальным. Чтобы получить список текущих имен элементов коллекции, выполните запрос к системным представлениям syscollector_collection_items .

[ @frequency = ] частота

Частота (в секундах) сбора данных этим элементом коллекции. @frequency имеет значение int, по умолчанию 5— минимальное значение, которое можно указать.

[ @parameters = ] N'parameters'

Входные параметры для элемента сбора. @parameters — xml с пустой строкой по умолчанию. Схема @parameters должна соответствовать схеме параметров типа сборщика.

Значения кода возврата

0 (успешно) или 1 (сбой).

Замечания

Если набор сбора настроен на режим без кэширования, изменение частоты не учитывается, поскольку этот режим предусматривает выполнение сбора данных и передачу по расписанию, указанному для набора сбора. Чтобы просмотреть состояние набора сбора, выполните следующий запрос. Замените <collection_item_id> идентификатором обновляемого элемента сбора.

USE msdb;
GO

SELECT cs.collection_set_id,
    collection_set_uid,
    cs.name,
    'is running' = CASE
        WHEN is_running = 0
            THEN 'No'
        ELSE 'Yes'
        END,
    'cache mode' = CASE
        WHEN collection_mode = 0
            THEN 'Cached mode'
        ELSE 'Non-cached mode'
        END
FROM syscollector_collection_sets AS cs
INNER JOIN syscollector_collection_items AS ci
    ON ci.collection_set_id = cs.collection_set_id
WHERE collection_item_id = < collection_item_id >;
GO

Разрешения

Для выполнения этой процедуры требуется членство в dc_admin или dc_operator (с разрешением EXECUTE). Хотя dc_operator может выполнять эту хранимую процедуру, члены этой роли ограничены в свойствах, которые они могут изменить. Следующие свойства можно изменить только dc_admin:

  • @new_name
  • @parameters

Примеры

Следующие примеры основаны на элементе коллекции, созданном в примере, определенном в sp_syscollector_create_collection_item (Transact-SQL).

А. Изменение частоты сбора

В следующем примере изменяется частота сбора для указанного элемента сбора.

USE msdb;
GO

EXEC sp_syscollector_update_collection_item
    @name = N'My custom T-SQL query collector item',
    @frequency = 3000;
GO

B. Переименование элемента коллекции

В следующем примере производится переименование элемента сбора.

USE msdb;
GO

EXEC sp_syscollector_update_collection_item
    @name = N'My custom T-SQL query collector item',
    @new_name = N'My modified T-SQL item';
GO

C. Изменение параметров элемента коллекции

В следующем примере изменяются параметры, связанные с элементом сбора. Инструкция, определенная в атрибуте <Value>, изменяется, а атрибуту UseSystemDatabases задается значение false. Чтобы просмотреть текущие параметры для этого элемента, запросите столбец параметров в системном представлении syscollector_collection_items . Возможно, потребуется изменить значение для @collection_item_id.

USE msdb;
GO
EXEC sp_syscollector_update_collection_item
@collection_item_id = 9,
@parameters = '
    <ns:TSQLQueryCollector xmlns:ns="DataCollectorType">
        <Query>
            <Value>SELECT * FROM sys.dm_db_index_usage_stats</Value>
            <OutputTable>MyOutputTable</OutputTable>
        </Query>
        <Databases>
            <Database> UseSystemDatabases = "false"
                       UseUserDatabases = "true"</Database>
        </Databases>
    </ns:TSQLQueryCollector>';
GO