none
FK's no SQL Server RRS feed

  • Pergunta

  • Bom Dia!

    Estou em um projeto de migração de algumas tabelas de DB2 para o SQL Server.
    Temos sido cobrados pelo fato de que no DB2 é possível habilitar FK's entre databases distintos.

    Apesar de saber que a estrutura é diferente no DB2, alguém saberia me orientar se nas novas versões do SQL tem como fazer isso? Alguma outra alternativa?

    Ainda temos nosso ambiente corporativa no SQL 2000.

    Carlos Magno
    terça-feira, 6 de outubro de 2009 13:12

Respostas

  • Boa Tarde,

    Meus conhecimentos em DB2 são limitados, mas conversando com um DBA DB2 bem experiente, minhas suspeitas se confirmaram. Nem o SQL Server e nem o DB2 oferecem FKs em bancos distintos (independente do DB2 estar na versão 9.7 ou de se utilizar o SQL Server 2008). No caso específico do DB2, até é possível criar, mas é FK não é garantida (forced) e violações serão permitidas o que permite dizer que ter e não ter dará praticamente na mesma.

    Acredito que você esteja referindo-se a tabelas em Table Spaces e (ou) schemas diferentes e não em bancos diferentes. É possível fazer isso no SQL Server através de FILEGROUPs e Schemas.

    Acredito que a utópica FK entre bancos diferentes seja um sonho pouco provável. Implementar FK entre bancos diferentes é muito complicado. O que aconteceria por exemplo se a tabela pai estivesse em um banco que por alguma razão ficasse offline ? As tabelas filhas ficariam inacessíveis ? Ou irião permitir violação ? Nenhuma das duas situações é desejável e por isso a integridade entre bancos diferentes é bem contraditória. Ouvi dizer que o Sybase consegue implementá-la, mas há riscos de corrupção de dados quando certas combinações acontecem.

    [ ]s,
     
    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    O princípio de Pareto, a curva ABC e consultas SQL
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!740.entry
    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 6 de outubro de 2009 16:54
    • Marcado como Resposta Carlos Cabral terça-feira, 6 de outubro de 2009 18:38
    terça-feira, 6 de outubro de 2009 16:54

Todas as Respostas

  • Carlos,

    Se não estou enganado no SQL Server 2005 isso já foi implementado, não tenho certeza.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 6 de outubro de 2009 13:49
    Moderador
  • Boa Tarde,

    Meus conhecimentos em DB2 são limitados, mas conversando com um DBA DB2 bem experiente, minhas suspeitas se confirmaram. Nem o SQL Server e nem o DB2 oferecem FKs em bancos distintos (independente do DB2 estar na versão 9.7 ou de se utilizar o SQL Server 2008). No caso específico do DB2, até é possível criar, mas é FK não é garantida (forced) e violações serão permitidas o que permite dizer que ter e não ter dará praticamente na mesma.

    Acredito que você esteja referindo-se a tabelas em Table Spaces e (ou) schemas diferentes e não em bancos diferentes. É possível fazer isso no SQL Server através de FILEGROUPs e Schemas.

    Acredito que a utópica FK entre bancos diferentes seja um sonho pouco provável. Implementar FK entre bancos diferentes é muito complicado. O que aconteceria por exemplo se a tabela pai estivesse em um banco que por alguma razão ficasse offline ? As tabelas filhas ficariam inacessíveis ? Ou irião permitir violação ? Nenhuma das duas situações é desejável e por isso a integridade entre bancos diferentes é bem contraditória. Ouvi dizer que o Sybase consegue implementá-la, mas há riscos de corrupção de dados quando certas combinações acontecem.

    [ ]s,
     
    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    O princípio de Pareto, a curva ABC e consultas SQL
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!740.entry
    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 6 de outubro de 2009 16:54
    • Marcado como Resposta Carlos Cabral terça-feira, 6 de outubro de 2009 18:38
    terça-feira, 6 de outubro de 2009 16:54