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:
Foi usado como referência esse artigo do mssqltips.
Bom pessoal, por hoje é só.
Abraços e até a próxima.