Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabianoSouza

Alternativa para gerar resumo

Recommended Posts

Preciso gerar um box com resumo sobre determinada entidade do meu banco.

São pelo menos dez itens que preciso calcular (basicamente totais)

 

Então pergunto. Qual a melhor forma de fazer isso?

 

Fazendo dez consultas? (acho que não)

 

Usando arquivos XML para armazenar totalizadores?

O ruim deste método é que terei que atualizar o arquivo XML para cada insert, delete e update que rodar na tabela, né?

 

Outras sugestões?

 

Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É total de linhas apenas, ou existe algum critério ?????

 

Se for só total usa essa cara


SELECT
    sysobjects.Name
    , sysindexes.Rows
FROM
    sysobjects
    INNER JOIN sysindexes
    ON sysobjects.id = sysindexes.id
WHERE
    type = 'U'
    AND sysindexes.IndId < 2

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Daniel.

Esse código é massa. Se desse para rodar isso usando critérios, seria top!

 

Bom, mas no meu caso os selects serão numas quatro tabelas apenas.

O detalhe crítico é que a página que fará esta consulta é bastante requisitada. Se eu deixar simplesmente ela rodar umas dez consultas (para ter os totais que preciso) vai derrubar o desempenho.

 

Tô vendo que a melhor saída é fazer o SQL Server gerar um XML com estes totais, depois ler o arquivo.

Aí acho que ficará suave.

 

Mas estou tendo dificuldade para gerar o XML.

Estou tentando isso

 

bcp "MEU_BANCO.dbo.minhaView" OUT "C:\Lancamentos.xml" -c -T 

Mostra a msg "Não é possível usar a opção OUTPUT ao passar uma constante para um procedimento armazenado

 

O que acontece?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gera XML deste modo:

http://technet.microsoft.com/pt-br/library/ms178107.aspx

 

Via BCP é mais lento e precisa de algumas autorizações para leitura/escrita em disco.

 

 

Qual sua versão do SQL? Se for acima de 2008, existem diversas DMVs que com certeza irão te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faria pelo SSIS (Integration Services) a exportação para XML.



Complementando, pois estou fazendo 3 migrações de dados e uma modelagem de BI.

 

Via BCP, pode-se fazer também. Uma idéia seria fazer uma View com saida XML,:

CREATE VIEW EXPORTAXML (ResultadoXML) As SELECT    sysobjects.Name    , sysindexes.RowsFROM    sysobjects    INNER JOIN sysindexes    ON sysobjects.id = sysindexes.idWHERE    type = 'U'    AND sysindexes.IndId < 2 FOR XML AUTO, ROOT ('NAme')
Chamada BCP:
exec master..xp_xmdshell 'BCP "BASE..EXPORTAXML" out "c:\exportxml.xml" -T -c'

Fiz rapido e de cabeça. veja se funciona.
Lembrando que a unidade C:\ é do servidor!!!


vou lembrando das coisas vou editando meu post.

 

Se não tiver acesso a unidade c:\ mande por email pelo xp_sendmail ou crie um relatorio em R.S para visualizar os dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A. Jr, não entendi bem a linha

exec master..xp_xmdshell 'BCP "BASE..EXPORTAXML" out "c:\exportxml.xml" -T -c'

Rodei aqui (colocando o nome da minha base) e deu erro dizendo que não existe a stored procedure.

A sintaxe é essa mesma?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A. Jr, não entendi bem a linha

exec master..xp_xmdshell 'BCP "BASE..EXPORTAXML" out "c:\exportxml.xml" -T -c'

Rodei aqui (colocando o nome da minha base) e deu erro dizendo que não existe a stored procedure.

A sintaxe é essa mesma?

 

eh xp_cmdshell

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mensagem 15281, Nível 16, Estado 1, Procedimento xp_cmdshell, Linha 1

O SQL Server bloqueou o acesso a procedimento 'sys.xp_cmdshell' do componente 'xp_cmdshell' porque esse componente está desativado como parte da configuração de segurança deste servidor. Um administrador de sistema pode habilitar o uso de 'xp_cmdshell' usando sp_configure. Para obter mais informações sobre como habilitar 'xp_cmdshell', procure 'xp_cmdshell' nos Manuais Online do SQL Server.


Preciso ativar algum serviço?


Ah... acho que não tenho este recurso instalado na máquina. Uso o SQL Express. Será que é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

EXEC sp_configure 'xp_cmdshell', 1GORECONFIGUREGO

 

http://technet.microsoft.com/pt-br/library/ms190693.aspx

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o procedimento.

Depois executei

exec master..xp_cmdshell 'BCP "MEU_BANCO..EXPORTAXML" out "c:\exportxml.xml" -T -c'

 

 

Deu este erro

 

"Não é possível abrir o arquivo de dados do host bcp"

Ah, descobri. Era questão de permissões da pasta.

 

Mas no host não vou ter aceso às permissões da pasta raíz.

Consigo colocar um caminho relativo? Por exemplo "../../../meu_site/pasta_usuário"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.