Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Können Sie einen Fremdschlüssel auf eine Ansicht einer verknüpften Servertabelle in SQLServer 2k5 haben?

Fremdschlüssel können nicht mit nicht lokalen Objekten verbunden werden – sie müssen auf lokale Tabellen verweisen. Sie erhalten den Fehler „Maximale Anzahl von Präfixen“, weil Sie auf die Tabelle mit einem 4-teiligen Namen (LinkedServer.Database.Schema.Object) verweisen und ein lokales Objekt nur einen 3-teiligen Namen haben würde.

Andere Lösungen :

  1. Replizieren Sie die Daten von der Quelle (dem Speicherort der Ansicht) auf denselben Server wie die Tabelle, der Sie den Schlüssel hinzufügen möchten. Sie können dies stündlich, täglich oder was auch immer tun, je nachdem, wie oft sich die Quelldaten ändern.
  2. Fügen Sie einen Auslöser für die Quelltabelle hinzu, um alle Änderungen an Ihre lokale Kopie zu übertragen. Dies wäre im Wesentlichen dasselbe wie Nr. 1, aber mit sofortiger Auffüllung der Änderungen
  3. Fügen Sie einen INSTEAD OF"-Trigger zu Ihrer Tabelle hinzu, der die Fremdschlüsseleinschränkung manuell überprüft, indem Sie vom Verbindungsserver auswählen und den Wert vergleichen, den Sie mit INSERT/UPDATE versuchen. Wenn er nicht übereinstimmt, können Sie die Änderung ablehnen .