Delen via


Foreign key-beperkingen uitschakelen voor replicatie

van toepassing op: SQL Server 2016 (13.x) en hoger Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-database in Microsoft Fabric

U kunt beperkingen voor refererende sleutels voor replicatie in SQL Server uitschakelen met behulp van SQL Server Management Studio of Transact-SQL. Dit kan handig zijn als u gegevens publiceert uit een eerdere versie van SQL Server.

Notitie

Als een tabel wordt gepubliceerd met behulp van replicatie, worden externe-sleutelbeperkingen automatisch uitgeschakeld voor bewerkingen die worden uitgevoerd door replicatieagents. De optie NOT FOR REPLICATION is standaard opgegeven voor foreign key-beperkingen en check-beperkingen; de beperkingen worden afgedwongen voor gebruikersbewerkingen, maar niet voor agentbewerkingen. Wanneer een replicatieagent een invoeg-, bijwerk- of verwijderbewerking uitvoert bij een abonnee, wordt de beperking niet gecontroleerd; als een gebruiker een invoeg-, bijwerk- of verwijderbewerking uitvoert, wordt de beperking gecontroleerd. De beperking is uitgeschakeld voor de replicatieagent omdat de beperking al is gecontroleerd bij Publisher toen de gegevens oorspronkelijk zijn ingevoegd, bijgewerkt of verwijderd.

machtigingen

Vereist ALTER-toestemming voor deze tabel.

SQL Server Management Studio gebruiken

Een foreign key-beperking uitschakelen voor replicatie

  1. Vouw in Objectverkennerde tabel met de buitenlandse sleutel die u wilt wijzigen uit en vouw vervolgens de map Sleutels uit.

  2. Klik met de rechtermuisknop op de vreemde-sleutelbeperking en selecteer vervolgens Wijzigen.

  3. Selecteer in het dialoogvenster Externe sleutelrelaties een waarde van Geen voor Afdwingen voor replicatie.

  4. Selecteer en sluit.

Gebruik Transact-SQL

Een buitenlandse sleutelconstraint uitschakelen voor replicatie

  1. Als u deze taak wilt uitvoeren in Transact-SQL, moet u de vreemde-sleutelbeperking uitschrijven. Vouw in Objectverkennerde tabel uit met de beperking voor refererende sleutels die u wilt wijzigen en vouw vervolgens de map Sleutels uit.

  2. Klik met de rechtermuisknop op de foreign key-beperking, selecteer Script Key As, selecteer vervolgens DROP en CREATE To, en selecteer vervolgens Nieuw queryeditorvenster. Het resulterende script moet er ongeveer uitzien als in het volgende voorbeeld uit de AdventureWorks2022 voorbeelddatabase:

    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. Wijzig in het ALTER TABLE ... ADD CONSTRAINT-gedeelte van het script de nieuwe foreign key-constraint en geef de optie NIET VOOR REPLICATIE aan. Bijvoorbeeld:

    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
    

Volgende stappen