Megosztás a következőn keresztül:


A replikáció idegenkulcs-korlátozásainak letiltása

Vonatkozik a következőkre: SQL Server 2016 (13.x) û későbbi verziók: Azure SQL Database,Azure SQL Managed Instance,Azure Synapse AnalyticsPlatform System (PDW)SQL database in Microsoft Fabric

Az SQL Serveren történő replikáció idegenkulcs-korlátozásait az SQL Server Management Studio vagy a Transact-SQL használatával tilthatja le. Ez akkor lehet hasznos, ha az SQL Server egy korábbi verziójából tesz közzé adatokat.

Note

Ha egy táblát replikációval tesznek közzé, a replikációs ügynökök által végrehajtott műveletek esetén a rendszer automatikusan letiltja az idegenkulcs-korlátozásokat. A NEM REPLIKÁLÁS beállítás alapértelmezés szerint meg van adva az idegenkulcs-korlátozásokhoz és az ellenőrzési kényszerekhez; a korlátozások a felhasználói műveletekre vannak kényszerítve, ügynökműveletekre nem. Ha egy replikációs ügynök beszúrást, frissítést vagy törlést végez egy előfizetőnél, a korlátozás nincs bejelölve; ha egy felhasználó beszúrást, frissítést vagy törlést végez, a korlátozás be van jelölve. A korlátozás le van tiltva a replikációs ügynök esetében, mert a korlátozást már ellenőrizték a Közzétevőnél, amikor az adatokat eredetileg beszúrták, frissítették vagy törölték.

engedélyek

Az ALTER jogosultság szükséges a tábla módosításához.

Az SQL Server Management Studio használata

A replikáció idegenkulcs-korlátozásának letiltása

  1. Az Objektumkezelő ablaktáblábanbontsa ki a módosítani kívánt idegen kulcsot tartalmazó táblát, majd bontsa ki a Kulcsok mappát.

  2. Kattintson a jobb gombbal az idegenkulcs-korlátozásra, majd válassza a Módosításlehetőséget.

  3. Az Idegenkulcs-kapcsolatok párbeszédpanelen válassza a Nincs értéket a Kényszerítés replikációhoz.

  4. Válassza a Bezárás lehetőséget.

Használd a Transact-SQL-t

A replikáció idegenkulcs-korlátozásának letiltása

  1. Ha ezt a feladatot a Transact-SQL-ben szeretné elvégezni, szkriptelje ki az idegenkulcs-korlátozást. Az Objektumkezelő ablaktáblábanbontsa ki a módosítani kívánt idegen kulcsot tartalmazó táblát, majd bontsa ki a Kulcsok mappát.

  2. Kattintson a jobb gombbal az idegenkulcs-korlátozásra, a lenyíló menüből válassza a Szkript kulcsaként, majd a következő lenyíló menüből a DROP és CREATE To lehetőséget, végül válassza ki az Új lekérdezésszerkesztő ablak lehetőséget. Az eredményként kapott szkriptnek az alábbi példához hasonlóan kell kinéznie a AdventureWorks2025 mintaadatbázisban:

    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. A szkript ALTER TABLE ... ADD CONSTRAINT részében módosítsa az új idegenkulcs-korlátozást, és adja meg a NEM REPLIKÁLÁS beállítást. Például:

    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
    

Következő lépések