Partilhar via


sp_syscollector_update_collection_item (Transact-SQL)

Aplica-se: SQL Server

Usado para modificar as propriedades de um item de coleta definido pelo usuário ou renomear um desses itens.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

@collection_item_id [ = ] collection_item_id

O identificador exclusivo que identifica o item de coleção. @collection_item_id é int, com um padrão de NULL. @collection_item_id deve ter um valor se @name for NULL.

[ @name = ] N'name'

O nome do item de coleta. @name é sysname, com um padrão de NULL. @name deve ter um valor se @collection_item_id for NULL.

@new_name [ = ] N'new_name'

O novo nome do item de coleção. @new_name é sysname, com um padrão de NULL, e se usado, não pode ser uma string vazia.

@new_name deve ser único. Para obter uma lista de nomes de itens de coleção atuais, consulte a exibição do syscollector_collection_items sistema.

@frequency [ = ] frequência

A frequência (em segundos) com que os dados são coletados por esse item de coleta. @frequency é int, com um padrão de 5, o valor mínimo que pode ser especificado.

@parameters [ = ] N'parâmetros'

Os parâmetros de entrada para o item da coleta. @parameters é xml, com um padrão de uma cadeia de caracteres vazia. O esquema @parameters deve corresponder ao esquema de parâmetros do tipo de coletor.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

Se o conjunto de coleta estiver definido para o modo não armazenado em cache, a alteração da frequência será ignorada, pois esse modo faz com que a coleção e o carregamento dos dados ocorram conforme a agenda especificada para o conjunto de coleta. Para exibir o status do conjunto de coleta, execute a consulta a seguir. Substitua <collection_item_id> pela ID do item de coleta a ser atualizado.

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

Permissões

Requer associação na função de banco de dados fixa dc_admin ou dc_operator (com permissão EXECUTE) para executar este procedimento. Embora dc_operator possa executar esse procedimento armazenado, os membros dessa função são limitados nas propriedades que podem alterar. As seguintes propriedades só podem ser alteradas por dc_admin:

  • @new_name
  • @parameters

Exemplos

Os exemplos a seguir são baseados no item de coleção criado no exemplo definido em sp_syscollector_create_collection_item.

R. Alterar a frequência de coleta

O exemplo a seguir altera a frequência de coleta do item de coleta especificado.

USE msdb;
GO

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

B. Renomear um item de coleção

O exemplo a seguir renomeia um item de coleta.

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. Alterar os parâmetros de um item de coleção

O exemplo a seguir altera os parâmetros associados ao item de coleta. A instrução definida no atributo <Value> é alterada e o atributo UseSystemDatabases é definido como falso. Para exibir os parâmetros atuais desse item, consulte a coluna de parâmetros na exibição do syscollector_collection_items sistema. Talvez seja necessário modificar o valor de @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