Udostępnij za pośrednictwem


Wyłączanie ograniczeń klucza obcego na potrzeby replikacji

Dotyczy: SQL Server 2016 (13.x) i nowsze Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL database w Microsoft Fabric

Ograniczenia klucza obcego dla replikacji w programie SQL Server można wyłączyć przy użyciu programu SQL Server Management Studio lub Języka Transact-SQL. Może to być przydatne, jeśli publikujesz dane z poprzedniej wersji programu SQL Server.

Notatka

Jeśli tabela jest publikowana przy użyciu replikacji, ograniczenia klucza obcego są automatycznie wyłączone dla operacji wykonywanych przez agentów replikacji. Opcja NOT FOR REPLICATION jest domyślnie określana dla ograniczeń klucza obcego i ograniczeń sprawdzających; ograniczenia są wymuszane dla operacji użytkownika, jednakże nie dla operacji agenta. Gdy agent replikacji wykonuje operację wstawiania, aktualizowania lub usuwania dla subskrybenta, ograniczenie nie jest zaznaczone; Jeśli użytkownik wykonuje operację wstawiania, aktualizowania lub usuwania, ograniczenie jest sprawdzane. Ograniczenie jest wyłączone dla agenta replikacji, ponieważ ograniczenie zostało już zaewidencjonowane w programie Publisher, gdy dane zostały pierwotnie wstawione, zaktualizowane lub usunięte.

uprawnienia

Aby korzystać z tabeli, wymagane jest uprawnienie ALTER.

Korzystanie z programu SQL Server Management Studio

Aby wyłączyć ograniczenie klucza obcego na potrzeby replikacji

  1. W Eksploratorze Obiektów , rozwiń tabelę z ograniczeniem klucza obcego, który chcesz zmodyfikować, a następnie rozwiń folder Klucze.

  2. Kliknij prawym przyciskiem myszy ograniczenie klucza obcego, a następnie wybierz pozycję Modyfikuj.

  3. W oknie dialogowym Relacje klucza obcego wybierz wartość Nie dla Wymuszanie dla replikacji.

  4. Wybierz , a następnie Zamknij.

Korzystanie z Transact-SQL

Aby wyłączyć ograniczenie klucza obcego na potrzeby replikacji

  1. Aby wykonać to zadanie w języku Transact-SQL, wykonaj skrypt ograniczenia klucza obcego. W Eksploratorze obiektówrozwiń tabelę z ograniczeniem klucza obcego, który chcesz zmodyfikować, a następnie rozwiń folder Klucze.

  2. Kliknij prawym przyciskiem myszy ograniczenie klucza obcego, wybierz pozycję Skryptuj klucz jako, a następnie wybierz pozycję DROP i CREATE To, a następnie wybierz pozycję Nowe okno edytora zapytań. Wynikowy skrypt powinien wyglądać podobnie do poniższego przykładu z przykładowej bazy danych AdventureWorks2022:

    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. W części skryptu ALTER TABLE ... ADD CONSTRAINT zmodyfikuj nowe ograniczenie klucza obcego i wybierz opcję NIE DOTYCZĄCĄ REPLIKACJI. Na przykład:

    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
    

Następne kroki