Dela via


Inaktivera främmande nyckelbegränsningar för replikering

gäller för: SQL Server 2016 (13.x) och senare Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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

  1. I Object Explorerexpanderar du tabellen med den främmande nyckelbegränsningen som du vill ändra, och öppnar sedan mappen Nycklar.

  2. Högerklicka på den utländska nyckelns begränsning och välj sedan Ändra.

  3. I dialogrutan Främmande nyckelrelationer väljer du värdet Nej för Verkställa för replikering.

  4. Välj Stäng.

Använd Transact-SQL

Inaktivera en begränsning för främmande nyckel för replikering

  1. 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.

  2. 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
    
  3. 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
    

Nästa steg