Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

È possibile avere una chiave esterna su una vista di una tabella di un server collegato in SQLServer 2k5?

Le chiavi esterne non possono essere collegate a oggetti non locali:devono fare riferimento a tabelle locali. Viene visualizzato l'errore "numero massimo di prefissi" perché si fa riferimento alla tabella con un nome in 4 parti (LinkedServer.Database.Schema.Object) e un oggetto locale avrebbe solo un nome in 3 parti.

Altre soluzioni :

  1. Replica i dati dall'origine (la posizione della vista) sullo stesso server della tabella su cui stai tentando di aggiungere la chiave. Puoi farlo ogni ora, ogni giorno o qualsiasi altra cosa, a seconda della frequenza con cui cambiano i dati di origine.
  2. Aggiungi un trigger sulla tabella di origine per inviare eventuali modifiche alla tua copia locale. Questo sarebbe essenzialmente lo stesso del numero 1, ma con una popolazione immediata di modifiche
  3. Aggiungi un trigger INSTEAD OF" alla tua tabella che controlla manualmente il vincolo di chiave esterna selezionando dal server collegato e confrontando il valore che stai tentando di INSERT/UPDATE. Se non corrisponde, puoi rifiutare la modifica .