none
Como relacionar uma tabela com outra tabela num outro banco de dados no SQL Server 2008 RRS feed

  • Pergunta

  • Prazado companheiros, agradecxo desde ja o auxilido da comunidade, meu problema é o seguinte eu tenho duas tabelas porem ambas estao em banco de daos diferente mas na mesma instancia SQL, exemplicando melhor:

    tem um banco de dados (A), e outro (B), digamos q no banco de dados (A) exista uma tabela UF, e no banco de dados (B) eu tenho uma tabela cidade, porem a tabela cidade e filha da tabela UF, como eu consigo montar o relacionamento entre as tabelas que estao em bancos de dadis diferentes.
    segunda-feira, 6 de julho de 2009 02:35

Respostas

  • Waldecy.
    A sua necessidade é criar FK entre essas duas tabelas ou somente ligá-las em um select e retornar?

    Vc consegue fazer um Join entre esses dois bancos da seguinte forma:

    SELECT Estado.Sigla, Cidade.Nome
    FROM Banco1.dbo.tableEstado Estado
    INNER JOIN Banco2.dbo.tableCidade Cidade
        ON Estado.id = Cidade.idEstado

    O problema é que o nome do banco de dados estará fixo na sua consulta, mas ai vc consegue montar a string do Select e executar tb... ai tem as alternativas.
    Flw!
    segunda-feira, 6 de julho de 2009 19:04

Todas as Respostas

  • Bom Dia,

    Isso não é possível de fazer via mecanismos tradicionais (PK e FK). A razão é muito simples. Provocar uma dependência entre bancos de dados irá gerar algumas questões administrativas:

    - O que acontece se o banco A cair ? A tabela Cidade do Banco B poderá ser acessada ?
    - Como gerenciar os backups do banco A e do banco B para não gerar registros que violem a PK ?
    - O que acontece se você precisar voltar um backup antigo do banco A cuja PK ainda não foi escrita, mas que o banco B tem as dependências ?

    Por essas e outras que não é possível fazer o relacionamento entre bancos de dados diferentes. Se essa é uma necessidade, você terá que controlar esse relacionamento via aplicação / triggers.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Certificados, Cross Database Ownership Chaining e Segurança
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!622.entry


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 6 de julho de 2009 12:02
  • Waldecy.
    A sua necessidade é criar FK entre essas duas tabelas ou somente ligá-las em um select e retornar?

    Vc consegue fazer um Join entre esses dois bancos da seguinte forma:

    SELECT Estado.Sigla, Cidade.Nome
    FROM Banco1.dbo.tableEstado Estado
    INNER JOIN Banco2.dbo.tableCidade Cidade
        ON Estado.id = Cidade.idEstado

    O problema é que o nome do banco de dados estará fixo na sua consulta, mas ai vc consegue montar a string do Select e executar tb... ai tem as alternativas.
    Flw!
    segunda-feira, 6 de julho de 2009 19:04