Foreign key-beperkingen uitschakelen voor replicatie
van toepassing op: SQL Server 2016 (13.x) en hoger
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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
Vouw in Objectverkennerde tabel met de buitenlandse sleutel die u wilt wijzigen uit en vouw vervolgens de map Sleutels uit.
Klik met de rechtermuisknop op de vreemde-sleutelbeperking en selecteer vervolgens Wijzigen.
Selecteer in het dialoogvenster Externe sleutelrelaties een waarde van Geen voor Afdwingen voor replicatie.
Selecteer en sluit.
Gebruik Transact-SQL
Een buitenlandse sleutelconstraint uitschakelen voor replicatie
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.
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
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