Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Você pode ter uma chave estrangeira em uma exibição de uma tabela de servidor vinculado no SQLServer 2k5?


Chaves estrangeiras não podem ser conectadas a objetos não locais - elas precisam referenciar tabelas locais. Você obtém o erro "número máximo de prefixos" porque está referenciando a tabela com um nome de 4 partes (LinkedServer.Database.Schema.Object), e um objeto local teria apenas um nome de 3 partes.

Outras soluções:
  1. Replicar os dados da fonte (o local da exibição) para o mesmo servidor da tabela na qual você está tentando adicionar a chave. Você pode fazer isso de hora em hora, diariamente ou o que for, dependendo da frequência com que os dados de origem são alterados.
  2. Adicione um gatilho na tabela de origem para enviar quaisquer alterações à sua cópia local. Isso seria essencialmente o mesmo que o nº 1, mas com população imediata de alterações
  3. Adicione um gatilho INSTEAD OF" à sua tabela que verifica manualmente a restrição de chave estrangeira selecionando no servidor vinculado e comparando o valor que você está tentando INSERT/UPDATE. Se não corresponder, você pode rejeitar a alteração .