Inaktivera främmande nyckelbegränsningar för replikering
gäller för: SQL Server 2016 (13.x) och senare
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-databas i Microsoft Fabric
Du kan inaktivera begränsningar för sekundärnyckel för replikering i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL. Detta kan vara användbart om du publicerar data från en tidigare version av SQL Server.
Not
Om en tabell publiceras med replikering inaktiveras begränsningar för sekundärnyckel automatiskt för åtgärder som utförs av replikeringsagenter. Alternativet INTE FÖR REPLIKERING anges som standard för begränsningar för utländska nycklar och kontrollbegränsningar; begränsningarna tillämpas för användaråtgärder men inte för agentåtgärder. När en replikeringsagent utför en infogning, uppdatering eller borttagning hos en prenumerant kontrolleras inte villkoret. Om en användare utför en infogning, uppdatering eller borttagning markeras villkoret. Villkoret är inaktiverat för replikeringsagenten eftersom villkoret redan kontrollerades i Publisher när data ursprungligen infogades, uppdaterades eller togs bort.
behörigheter
Kräver ALTER-behörighet på tabellen.
Använda SQL Server Management Studio
Inaktivera en utländsk nyckelbegränsning för replikering
I Object Explorerexpanderar du tabellen med den främmande nyckelbegränsningen som du vill ändra, och öppnar sedan mappen Nycklar.
Högerklicka på den utländska nyckelns begränsning och välj sedan Ändra.
I dialogrutan Främmande nyckelrelationer väljer du värdet Nej för Verkställa för replikering.
Välj Stäng.
Använd Transact-SQL
Inaktivera en begränsning för främmande nyckel för replikering
För att utföra den här uppgiften i Transact-SQL, skriv ut begränsningen för foreign key. I Object Explorerexpanderar du först tabellen med den främmande nyckelbegränsning som du vill ändra, och expanderar därefter mappen Nycklar.
Högerklicka på den främmande nyckelbegränsningen, välj skripta nyckel som, och välj sedan DROP och CREATE till, och välj sedan Nytt frågeredigeringsfönster. Det resulterande skriptet bör se ut ungefär så här från
AdventureWorks2022
exempeldatabas: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
I del
ALTER TABLE ... ADD CONSTRAINT
av skriptet ändrar du begränsningen för den nya utländska nyckeln och anger alternativet INTE FÖR REPLIKERING. Till exempel: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