FK's no SQL Server
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.
terça-feira, 6 de outubro de 2009 13:12
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.