Como ver quantos registros tem em cada tabela do Protheus em uma query

No artigo de hoje, vamos demonstrar uma query que lista todas as tabelas do Protheus que possuem registros.

Às vezes, quando estamos implantando o Protheus em uma empresa e precisamos fazer a limpeza na base, precisamos saber quais tabelas serão impactadas.

Pensando nisso, pesquisei uma forma de fazer uma query no SQL Server que já retorna o resultado de quais tabelas estão populadas e quantos registros existe em cada uma.

A ideia aqui, é pegar todas as tabelas na sys.objects e buscar os dados das partições disponível em sys.dm_db_partition_stats. Com isso, no group by, nós trazemos apenas o que tiver mais que zero registros usando o HAVING.

Abaixo a query desenvolvida:

SELECT
      objetos.name AS Tabela , SUM(dados_particoes.row_count) AS Linhas
FROM
      sys.objects AS objetos
      INNER JOIN sys.dm_db_partition_stats AS dados_particoes ON objetos.object_id = dados_particoes.object_id
WHERE 
      objetos.type = 'U'
      AND objetos.is_ms_shipped = 0x0
      AND dados_particoes.index_id < 2
GROUP BY
    objetos.schema_id, objetos.name
	HAVING SUM(dados_particoes.row_count) > 0
ORDER BY
	Tabela

E abaixo um print da query executada:

Listagem das tabelas com a quantidade de registros

Foi usado como referência esse artigo do mssqltips.

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação