Alecsandro Postado Agosto 19, 2009 Denunciar Share Postado Agosto 19, 2009 (editado) Boa tarde,Estou precisando criar uma Query que me retorne a relação das tabelas que não estejam vazias no meu banco de dados. Será que alguém poderia me ajudar ? Editado Agosto 19, 2009 por Alecsandro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Agosto 19, 2009 Denunciar Share Postado Agosto 19, 2009 Meu amigo... não sei se o sql tem uma função/campo pronta pra isto. Pesquisei na net e não encontrei nada.... :.(Resolvi fazer um script que retornar o resultado que deseja, ok?Seguinte: criei uma temporária de instância, inseri os nomes de tabelas criadas no Banco de Dados. Declarei algumas variáveis e monto dinamicamente o script dentro de uma variável destas. Faço a execução do string, gravando na temporária. Após execução, você dá um select na temporária. Vai encontrar as tabelas do Banco, com a quantidade de inserção de cada uma delas. Quando fechar a instância, a tabela será eliminada da memória.Espero que ajude. Roda aí depois me fala se deu certo!!! :.)-- cria a tabela. Roda 1 vez só. Se tiver q rodar de novo, tem que dropar.create table #Tabelas (NomeTabela varchar(100), QtdaInsercoes int)-- insere as tabelas do BD na temporariainsert into #Tabelas (NomeTabela)select name from sysobjects where xtype='U' and uid=1-- carga da quantidade de inserções nas tabelas. -- rodar o bloco tododeclare @Script as varchar(1000)declare @NomeTabela as varchar(100)set @NomeTabela = (select top 1 NomeTabela from #Tabelas where QtdaInsercoes is null)while @NomeTabela is not nullBegin set @Script = ('update #Tabelas set QtdaInsercoes=(select count(*) from ' + @NomeTabela + ') where NomeTabela = ''' + @NomeTabela + '''') exec (@Script) set @NomeTabela = (select top 1 NomeTabela from #Tabelas where QtdaInsercoes is null)End-- até aqui.-- Verificar a carga da tabelaselect * from #Tabelas Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alecsandro Postado Agosto 29, 2009 Autor Denunciar Share Postado Agosto 29, 2009 Achei uma query que funcionaou bem: DECLARE @NOME_DA_TABELA VARCHAR(40), @COMANDO VARCHAR(4000) CREATE TABLE #QTDE_REGISTROS_TABELAS (NOME_TABELA VARCHAR(200), TOTAL_REGISTROS INT) DECLARE MEU_CURSOR CURSOR FOR -- --Seleciona todas as tabelas do BD SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' OPEN MEU_CURSOR FETCH NEXT FROM MEU_CURSOR INTO @NOME_DA_TABELA WHILE @@FETCH_STATUS = 0 BEGIN -- --Monta comando dinâmico para contar o número de registros e --insere em tabela SET @COMANDO = 'INSERT INTO #QTDE_REGISTROS_TABELAS (NOME_TABELA, TOTAL_REGISTROS) SELECT ''' + @NOME_DA_TABELA + ''', COUNT(*) FROM ' + @NOME_DA_TABELA --PRINT @COMANDO EXEC(@COMANDO) FETCH NEXT FROM MEU_CURSOR INTO @NOME_DA_TABELA END CLOSE MEU_CURSOR DEALLOCATE MEU_CURSOR -- SELECT * FROM #QTDE_REGISTROS_TABELAS DROP TABLE #QTDE_REGISTROS_TABELAS -- Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Agosto 30, 2009 Denunciar Share Postado Agosto 30, 2009 Bom dia Alecsandro.Ok. Esta query possui a mesma lógica q te passei. A diferença que crio a tabela temporária com as tabelas da base e "updato" com a quantidade de registros. Nesta que postou, são realizadas as duas coisas em uma única execução.UMA DICA: prefira utilizar loops (while) ao invés de cursores, pois estes são mais "pesados" no processamento. Até mais. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Alecsandro
Boa tarde,
Estou precisando criar uma Query que me retorne a relação das tabelas que não estejam vazias no meu banco de dados.
Será que alguém poderia me ajudar ?
Editado por AlecsandroLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.