PT
Español
English
Português
    Purgar o Histórico de Uso de Software

    O que é purgar histórico de uso de software?

    O ADM registra continuamente quais aplicações são usadas pelos dispositivos gerenciados. Esse registro é acumulado em três tabelas de histórico que crescem indefinidamente: o detalhe diário e seus dois consolidados, diário e mensal.

    Esfregar é o processo de apagar esse histórico até uma certa data, mantendo apenas as informações mais recentes. O procedimento dbo.PRC_ASM_CLEAN_SOFT_USE Ele executa essa limpeza em lote de até 5.000 registros por tabela, para que a operação não trave o banco de dados.

    ⚐ Nota: Esse procedimento requer a execução de instruções T-SQL no banco de dados. É destinado ao administrador da plataforma ou ao pessoal de suporte com acesso ao SQL Server Management Studio.


    Para que serve?

    • Libere espaço de armazenamento no banco de dados.
    • Reduza os tempos de resposta para consultas e relatórios de uso de software.
    • Monitore o crescimento sustentado das tabelas de história.


    Quais informações são apagadas?

    Cada data de corte é independente e exclui tudo o que aconteceu antes. A data indicada e os registros subsequentes são mantidos.

    Parâmetro Tábua Informações que você exclui Efeito no usuário
    @i_detail DBO. ASM_SOFTWARE_USAGE_DETAIL Detalhes de Uso Diário A divisão por janela não está mais disponível
    @i_day DBO. ASM_SOFTWARE_USAGE_DAY Consolidação diária Os relatórios diários de uso param de mostrar esse período
    @i_month DBO. ASM_SOFTWARE_USAGE_MONTH Consolidado Mensal (via ADW_DIM_DATE) Relatórios mensais de uso param de mostrar esse período

    Um período de retenção mais curto é tipicamente atribuído aos detalhes do que aos consolidados, porque a decomposição ocupa muito mais espaço e é vista com menos frequência.

    O procedimento não intervém na tabela herdada dbo.ASM_SOFTWARE_USAGE; Sua purificação é realizada separadamente, no passo 5.

    ⚠ Aviso: A exclusão é definitiva. Informações limpas só são recuperadas restaurando um backup do banco de dados.


    O que é exigido antes de começar?

    • ADM versão 9.5.43 ou superior. As versões 9.5.33 e anteriores usam uma estrutura diferente e não devem ser depuradas com esse procedimento.
    • Suporte atual do banco de dados.
    • Janela de manutenção, já que o processo gera carga sobre o motor.
    • Permissões de execução sobre o procedimento e a eliminação nas mesas envolvidas.

    ⚐ Nota: Execute todos os passos na mesma janela de consulta. As variáveis são declaradas apenas uma vez na inicialização; se você abrir uma nova aba, o motor responde à mensagem Must declare the scalar variable.


    Como faço para executar a depuração?

    1. Confirme a versão do banco de dados. Se for 9.5.33 ou anterior, não consulte as considerações finais.

    SELECT * FROM dbo.VERSION_DATABASE;
    

    2. Defina as datas de corte e veja quantos registros são elegíveis. Essa verificação é somente leitura e não modifica as informações.

    ⚐ Nota: As datas de corte são ajustadas conforme necessário, no formato ‘AAAAA-MM-DD’. Exemplo: ‘2026-01-01’.

    SET NOCOUNT ON;
    
    -- Configuración: fechas de corte (ajustar según requerimiento)
    DECLARE @i_detail date = 'AAAA-MM-DD'; -- ASM_SOFTWARE_USAGE_DETAIL
    DECLARE @i_day date = 'AAAA-MM-DD'; -- ASM_SOFTWARE_USAGE_DAY
    DECLARE @i_month date = 'AAAA-MM-DD'; -- ASM_SOFTWARE_USAGE_MONTH
    
    DECLARE @detail_key int = dbo.FUN_ADW_DATE_KEY(@i_detail);
    DECLARE @day_key int = dbo.FUN_ADW_DATE_KEY(@i_day);
    DECLARE @month_key int = dbo.FUN_ADW_DATE_KEY(@i_month);
    
    -- Verificación previa (solo lectura)
    SELECT 'ASM_SOFTWARE_USAGE_DETAIL' AS table_name, COUNT_BIG(*) AS eligible_rows
    FROM dbo.ASM_SOFTWARE_USAGE_DETAIL
    WHERE date_id < @detail_key;
    
    SELECT 'ASM_SOFTWARE_USAGE_DAY' AS table_name, COUNT_BIG(*) AS eligible_rows
    FROM dbo.ASM_SOFTWARE_USAGE_DAY
    WHERE date_id < @day_key;
    
    SELECT 'ASM_SOFTWARE_USAGE_MONTH' AS table_name, COUNT_BIG(*) AS eligible_rows
    FROM dbo.ASM_SOFTWARE_USAGE_MONTH AS su
    WHERE EXISTS (
        SELECT 1
        FROM dbo.ADW_DIM_DATE AS dd
        WHERE dd.[year] = su.[year]
          AND dd.[month] = su.[month]
          AND dd.id < @month_key
    );
    

    Exemplo: Para manter os detalhes do último ano e os consolidados dos últimos três, atribua @i_detail = ‘2026-01-01’, @i_day = ‘2024-01-01’ e @i_month = ‘2024-01-01’.

    3. Execute o debug.

    EXEC dbo.PRC_ASM_CLEAN_SOFT_USE
        @i_detail = @i_detail,
        @i_day = @i_day,
        @i_month = @i_month;
    

    4. Valide o resultado repetindo a contagem do passo 2. Todas as três consultas devem devolver zero. Veja também os intervalos preservados.

    -- Repetir el conteo previo; se espera 0 en las tres tablas
    SELECT 'ASM_SOFTWARE_USAGE_DETAIL' AS table_name, COUNT_BIG(*) AS eligible_rows
    FROM dbo.ASM_SOFTWARE_USAGE_DETAIL
    WHERE date_id < @detail_key;
    
    SELECT 'ASM_SOFTWARE_USAGE_DAY' AS table_name, COUNT_BIG(*) AS eligible_rows
    FROM dbo.ASM_SOFTWARE_USAGE_DAY
    WHERE date_id < @day_key;
    
    SELECT 'ASM_SOFTWARE_USAGE_MONTH' AS table_name, COUNT_BIG(*) AS eligible_rows
    FROM dbo.ASM_SOFTWARE_USAGE_MONTH AS su
    WHERE EXISTS (
        SELECT 1
        FROM dbo.ADW_DIM_DATE AS dd
        WHERE dd.[year] = su.[year]
          AND dd.[month] = su.[month]
          AND dd.id < @month_key
    );
    
    -- Rangos conservados, para referencia
    SELECT MIN(date_id) AS min_date_id, MAX(date_id) AS max_date_id, COUNT_BIG(*) AS total_rows
    FROM dbo.ASM_SOFTWARE_USAGE_DETAIL;
    
    SELECT MIN(date_id) AS min_date_id, MAX(date_id) AS max_date_id, COUNT_BIG(*) AS total_rows
    FROM dbo.ASM_SOFTWARE_USAGE_DAY;
    

    5. Depurar a tabela legado dbo.ASM_SOFTWARE_USAGE, somente se o banco de dados foi atualizado a partir da versão 9.5.33 ou anterior. Esse bloco exclui todos os registros, sem data de corte, também em lotes de 5.000.

    ⚠ Aviso: Realize essa etapa somente após confirmar na etapa 1 que a base está rodando na versão 9.5.43 ou superior.

    -- Verificación previa (solo lectura)
    SELECT COUNT_BIG(*) AS total_rows FROM dbo.ASM_SOFTWARE_USAGE;
    
    -- Eliminación por lotes de 5.000 registros (mismo patrón que el PRC documentado)
    WHILE 1 = 1
    BEGIN
        DELETE TOP (5000) FROM dbo.ASM_SOFTWARE_USAGE;
        IF @@ROWCOUNT = 0 BREAK;
    END;
    
    -- Validación posterior (se espera 0)
    SELECT COUNT_BIG(*) AS total_rows FROM dbo.ASM_SOFTWARE_USAGE;
    


    O que significa a mensagem “(0 linhas afetadas)”?

    Esta mensagem indica que não há registros anteriores à data especificada, não que o procedimento falhou. Esse é o resultado esperado quando a depuração já foi executada anteriormente, ou quando as datas de corte são mais antigas que o histórico armazenado.

    Da mesma forma, os avisos “(1 linha afetada)” intercalados correspondem a atribuições internas de variáveis e não representam exclusões.

    Para confirmar o comportamento, veja a contagem no passo 2: Se você devolver zero antes de executar a depuração, não há informações elegíveis.


    O que acontece em bancos de dados atualizados de versões anteriores?

    Bancos de dados atualizados a partir da versão 9.5.33 ou anterior mantêm histórico no dbo.ASM_SOFTWARE_USAGE, que o procedimento atual não usa ou depura mais. Esse conteúdo é imobilizado e ocupa apenas espaço.

    Como é uma versão obsoleta, esses registros são excluídos diretamente, sem migrá-los, através da etapa 5 do procedimento.


    Quais considerações se aplicam às versões 9.5.33 e anteriores?

    Essas versões não utilizam a tabela de detalhes atual: as informações são baseadas em ASM_SOFTWARE_USAGE, e os consolidados são calculados em AFW_DIM_DATE em vez de ADW_DIM_DATE. Além disso, eles têm um defeito conhecido no controle do ciclo de descarte por @@ROWCOUNT, o que pode impedir limpezas diárias e mensais.

    Nesses casos, recomenda-se que você atualize a plataforma antes de depurar, em vez de substituir o procedimento.