none
Fazer join entre bancos diferentes para comparar umas transações RRS feed

  • Pergunta

  • bem... eu tenho uma query que é consultada manualmente e eu quero fazer essa consulta via web...

     

    a query é a seguinte:

     

    SELECT t.date_transaction Data,
        contenu_iso,
           ae.noplaca Placa,
           '1'||SUBSTR(t.voie, 2, 2) Pista,
           t.numero_transaction Numero,
           LTRIM(TO_CHAR(t.id_classe, '09')) CATEGORIA,
           ae.dcveiculo Descricao,
           ae.txcomentario Observacao
           --md.dcdelecao MotivoDelecao
    FROM TRANSACTION@gea t, ANOTA_EVASAO ae--, motivo_delecao md
    WHERE t.date_transaction = ae.dttransacao_gea
      AND t.voie = 'A'||SUBSTR(nopista_gea, 2, 2)
      AND t.numero_transaction = ae.notransacao_gea
      AND t.id_voie = '2'
      AND t.id_obs_passage  IN ('3', 'G')
      AND ae.cddelecao = '06'--in ('06', '02')
      AND dttransacao_gea BETWEEN TO_DATE('01/05/2007 00:00:00', 'dd/mm/yyyy hh24:miTongue Tieds')
                              AND TO_DATE('01/05/2007 23:59:59', 'dd/mm/yyyy hh24:miTongue Tieds')
            ORDER BY dttransacao_gea

     

    TRANSACTION@GEA

    GEA é um dblink que fica num banco... e TRANSACTION é um tabela num outro banco...

    eu preciso comparar alguns dados pra proceguir na query...

    como faço esse join?

    terça-feira, 26 de junho de 2007 16:53

Todas as Respostas

  •  

    Olá,

     

    O DB que você que acessar está no mesmo servidor ou servidor separado? Veja um exemplo para cada situação:

     

    Mesmo servidor:

    SELECT Local

     

    SELECT * FROM TabelaLocal TL

    INNER JOIN NomeDaDB.dbo.NomeDaTabela TR ON TL.IdRelacionado = TR.IdRelacionado

    WHERE .......

     

    No caso de servidores diferentes, você precisa primeiramente adicionar um Linked Server para o segundo servidor (veja no Books Online sobre Linked Server). Depois disso, basta usar desta maneira:

     

    SELECT Remoto

    SELECT * FROM TabelaLocal TL

    INNER JOIN NomeDoServidorRemoto.NomeDaDB.dbo.NomeDaTabela TR ON TL.IdRelacionado = TR.IdRelacionado

    WHERE .......

     

    Espero que lhe ajude.

     

     

    Abraço

    terça-feira, 26 de junho de 2007 17:33
  • Ajudou sim...

     

    aonde eu acho esse Books Online pra saber mais sobre Linked Server??

    quarta-feira, 27 de junho de 2007 20:03
  •  

    Se você instalou as ferramentas do SQL (Enterprise Manager no SQL 2000 ou Management Studio no SQL 2005) você terá também o Books Online instalado.

     

    Veja no menu iniciar, dentro do Microsoft SQL Server, deverá encontrar o Books Online. Ou então, dentro de qualquer tela do SQL, aperte F1.

     

     

    Abraço

    quarta-feira, 27 de junho de 2007 20:09
  • Alexandre,

     

    Boa tarde. Seu post me trouxe grande alívio numa atividade bem chata que possuou, porém não consegui descobrir como adiicionar o  Linked Server no SQL Server 2008, você poderia me ajudar?

     

    Antecipadamente agradeço,

     

    Abraço,

    Demis Meneghetti

     

    quinta-feira, 26 de janeiro de 2012 15:11
  • Demis

    este artigo deverá ajudar

    http://msdn.microsoft.com/en-us/library/ms190479.aspx


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quinta-feira, 26 de janeiro de 2012 16:42
  • Olá pessoal, cuidado ao utilizar este tipo de join.

    As vezes é melhor carregar uma tabela temporária via openquery e depois fazer o select que vocês precisarem.

    um abraço

    terça-feira, 8 de maio de 2012 10:47
  • Com tabela temporária é uma boa também,

    Você pode utilizar

    IF Object_ID ('tempDb..#TabelaTemporariaDoOutroServidor') IS NOT NULL

    DROP TABLE #TabelaTemporariaDoOutroServidor

    SELECT *

       INTO #TabelaTemporariaDoOutroServidor

    FROM LINKEDSERVER.dbOutroServidor.dbo.TabelaTemporariaDoOutroServidor

    Dessa forma você carrega na consulta local e nao corre o risco de uma transação ficar parada.

    abs.

    quarta-feira, 9 de maio de 2012 12:35