Läs på engelska

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.

Anteckning

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 behörighet för ALTER-kommandot 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 utländsk nyckelbegränsning 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 tabellen med den främmande nyckelbegränsningen som du vill ändra, och öppnar sedan mappen Nycklar.

  2. Högerklicka på den främmande nyckelbegränsningen, tryck skript nyckel som, tryck DROP OCH CREATE TILL, tryck Nytt fönster för frågeredigeraren. Det resulterande skriptet bör se ut ungefär så här från AdventureWorks2022 exempeldatabas:

    SQL
    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:

    SQL
    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