none
Fazer soma de um determinado campo em uma tabela em 18 DB's RRS feed

  • Pergunta

  • Bom dia pessoal,

    Estou com duvida na seguinte possibilidade,

    Em um servidor, existem 18 bancos para 18 filiais

    Nestes bancos, existe uma determinada tabela com determinados campos.

    Gostaria de saber, se existe alguma forma de criar um script onde eu possa:

    Criar uma tabela temporaria para armazenar as informações dos campos

    popular esta tabela com comandos onde eu não tenha que fazer inumeros selects e unions pois são 18 bancos e informações de uma tabela especifica.

    Obrigado


    Fabio Aragao

    quarta-feira, 9 de agosto de 2017 14:13

Respostas

  • create view nomedaview
    
    as
    
    select campo1, campo2 from banco1.dbo.tabela
    
    union all 
    
    select campo1, campo2 from banco2.dbo.tabela
    
    union all 
    
    select campo1, campo2 from banco3.dbo.tabela
    
    ...
    
    union all 
    
    select campo1, campo2 from banco18.dbo.tabela

    Depois vc faz um select na view.

    select * from nomedaview



    Vinicius Fonseca - MCP | MCTS | MCDBA | MCITP | MCTS | MCT | ITIL Foundation - DGA SISTEMAS - Se minha resposta for útil, classifique-a. :)


    • Editado Vinicius_Fonseca quarta-feira, 9 de agosto de 2017 16:31
    • Marcado como Resposta Fabio Aragao quarta-feira, 9 de agosto de 2017 16:35
    quarta-feira, 9 de agosto de 2017 16:31

Todas as Respostas

  • Olá Fabio,

    as tabelas tem a mesma estrutura em todos bancos de dados?

    Não entendi bem, você que armazenar na tabela temporária os nomes das colunas?

    Você quer criar várias query's diferentes com base nessa tabela temporária ou executar várias vezes a mesma query?


    Vinicius Fonseca - MCP | MCTS | MCDBA | MCITP | MCTS | MCT | ITIL Foundation - DGA SISTEMAS - Se minha resposta for útil, classifique-a. :)


    quarta-feira, 9 de agosto de 2017 14:21
  • Obrigado por responder Vinicius,

    Então, no mesmo servidor são 18 bancos que correspondem a 18 filiais.

    dentro de cada banco existe uma tabela em comum que tem uma informação que não é utilizada sempre, para tanto nada foi feito a nivel sistemico para este relatorio..

    Preciso pegar esta informação nestes 18 bancos, sendo que gostaria de fazer ( tão somente se possivel ) um script enxuto.. ou seja, não seria legal dar 18 selects com union para tal.. o script ficaria grande demais..

    A questão da tabela temporia foi uma ideia que tive, mas se não for necessário nao tem problema..


    Fabio Aragao

    quarta-feira, 9 de agosto de 2017 14:46
  • Não seria melhor criar uma view?

    Vinicius Fonseca - MCP | MCTS | MCDBA | MCITP | MCTS | MCT | ITIL Foundation - DGA SISTEMAS - Se minha resposta for útil, classifique-a. :)

    quarta-feira, 9 de agosto de 2017 15:53
  • A questão do código é que está pegando.

    Fabio Aragao

    quarta-feira, 9 de agosto de 2017 16:04
  • create view nomedaview
    
    as
    
    select campo1, campo2 from banco1.dbo.tabela
    
    union all 
    
    select campo1, campo2 from banco2.dbo.tabela
    
    union all 
    
    select campo1, campo2 from banco3.dbo.tabela
    
    ...
    
    union all 
    
    select campo1, campo2 from banco18.dbo.tabela

    Depois vc faz um select na view.

    select * from nomedaview



    Vinicius Fonseca - MCP | MCTS | MCDBA | MCITP | MCTS | MCT | ITIL Foundation - DGA SISTEMAS - Se minha resposta for útil, classifique-a. :)


    • Editado Vinicius_Fonseca quarta-feira, 9 de agosto de 2017 16:31
    • Marcado como Resposta Fabio Aragao quarta-feira, 9 de agosto de 2017 16:35
    quarta-feira, 9 de agosto de 2017 16:31