Deaktivieren von Fremdschlüsseleinschränkungen für die Replikation

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Sie können Fremdschlüsseleinschränkungen für die Replikation in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL deaktivieren. Dies kann nützlich sein, wenn Sie Daten aus einer früheren Version von SQL Server veröffentlichen.

Hinweis

Wird eine Tabelle mithilfe einer Replikation veröffentlicht, werden Fremdschlüsseleinschränkungen automatisch für die Operationen deaktiviert, die von Replikations-Agents ausgeführt werden. Die NOT FOR REPLICATION-Option ist standardmäßig für FOREIGN KEY-Einschränkungen und CHECK-Einschränkungen angegeben, die bei Benutzeroperationen, nicht jedoch bei Agent-Operationen erzwungen werden. Wenn ein Replikations-Agent eine Einfügung, ein Update oder eine Löschung auf einem Abonnenten ausführt, wird die Einschränkung nicht überprüft; wenn ein Benutzer eine Einfügung, ein Update oder eine Löschung ausführt, wird die Einschränkung überprüft. Die Einschränkung wird für den Replikations-Agent deaktiviert, da die Einschränkung bereits auf dem Verleger überprüft wurde, als die Daten ursprünglich eingefügt, aktualisiert oder gelöscht wurden.

Berechtigungen

Erfordert die ALTER-Berechtigung für die Tabelle.

Verwenden von SQL Server Management Studio

So deaktivieren Sie eine Fremdschlüsseleinschränkung für die Replikation

  1. Erweitern Sie im Objekt-Explorerdie Tabelle mit der Fremdschlüsseleinschränkung, die geändert werden soll, und erweitern Sie dann den Ordner Schlüssel .

  2. Klicken Sie mit der rechten Maustaste auf die Fremdschlüsseleinschränkung, und wählen Sie anschließend Ändern aus.

  3. Wählen Sie im Dialogfeld Fremdschlüsselbeziehungen den Wert Nein für Für Replikation erzwingenaus.

  4. Wählen Sie Schließen aus.

Verwenden von Transact-SQL

So deaktivieren Sie eine Fremdschlüsseleinschränkung für die Replikation

  1. Um diese Aufgabe in Transact-SQL auszuführen, erstellen Sie ein Skript für die Fremdschlüsseleinschränkung. Erweitern Sie im Objekt-Explorerdie Tabelle mit der Fremdschlüsseleinschränkung, die geändert werden soll, und erweitern Sie dann den Ordner Schlüssel .

  2. Klicken Sie mit der rechten Maustaste auf die Fremdschlüsseleinschränkung, wählen Sie Skript für Schlüssel als aus, wählen Sie dann DROP und CREATE in und anschließend Neues Abfrage-Editor-Fenster aus. Das resultierende Skript sollte dem folgenden Beispiel aus der AdventureWorks2022-Beispieldatenbank ähneln:

    ALTER TABLE [Sales].[SalesTerritoryHistory] 
    DROP CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID]
    GO
    
    ALTER TABLE [Sales].[SalesTerritoryHistory]  WITH CHECK 
    ADD CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID] 
    FOREIGN KEY([BusinessEntityID])
    REFERENCES [Sales].[SalesPerson] ([BusinessEntityID]);
    GO
    
    ALTER TABLE [Sales].[SalesTerritoryHistory] 
    CHECK CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID]
    GO
    
  3. Ändern Sie die neue Fremdschlüsseleinschränkung im Teil ALTER TABLE ... ADD CONSTRAINT des Skripts, und geben Sie die Option „NICHT FÜR REPLIKATION“ an. Zum Beispiel:

    ALTER TABLE [Sales].[SalesTerritoryHistory] 
    DROP CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID]
    GO
    
    ALTER TABLE [Sales].[SalesTerritoryHistory]  WITH CHECK 
    ADD CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID] 
    FOREIGN KEY([BusinessEntityID]) 
    REFERENCES [Sales].[SalesPerson] ([BusinessEntityID]) 
    NOT FOR REPLICATION; --added to disable constraint for replication
    GO
    
    ALTER TABLE [Sales].[SalesTerritoryHistory] 
    CHECK CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID]
    GO
    

Nächste Schritte