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.