Partilhar via


Desabilitar restrições de chave estrangeira para replicação

Aplica-se a: SQL Server 2016 (13.x) e posterior Banco de Dados SQL do AzureInstância Gerenciada SQL do AzureBanco de Dados do Azure Synapse AnalyticsAnalytics Platform System (PDW)no Microsoft Fabric

Você pode desabilitar restrições de chave estrangeira para replicação no SQL Server usando o SQL Server Management Studio ou o Transact-SQL. Isso pode ser útil se você estiver publicando dados de uma versão anterior do SQL Server.

Observação

Se uma tabela for publicada usando replicação, as restrições de chave estrangeira serão automaticamente desabilitadas para operações executadas por agentes de replicação. A opção NOT FOR REPLICATION é especificada por padrão para restrições de chave estrangeira e restrições de verificação; As restrições são impostas para operações de usuário, mas não operações de agente. Quando um agente de replicação executa uma inserção, atualização ou exclusão em um Assinante, a restrição não é verificada; Se um usuário executar uma inserção, atualização ou exclusão, a restrição será verificada. A restrição está desabilitada para o agente de replicação porque a restrição já estava verificada no Publisher quando os dados foram originalmente inseridos, atualizados ou excluídos.

permissões

Requer permissão ALTER na tabela.

Usar o SQL Server Management Studio

Para desabilitar uma restrição de chave estrangeira para replicação

  1. No Explorador de Objetos , expanda a tabela com a restrição de chave estrangeira que deseja modificar e expanda, em seguida, a pasta Chaves.

  2. Clique com o botão direito do rato na restrição de chave estrangeira e, em seguida, selecione Modificar.

  3. Na caixa de diálogo Relações de Chave Estrangeira, selecione um valor de Sem para Enforce For Replication.

  4. Selecione Fechar.

Use Transact-SQL

Para desabilitar uma restrição de chave estrangeira para replicação

  1. Para executar essa tarefa no Transact-SQL, crie um script para fora da restrição de chave estrangeira. No Pesquisador de Objetos , expanda a tabela com a restrição de chave estrangeira que se deseja modificar e, em seguida, expanda a pasta Chaves .

  2. Clique com o botão direito do rato na restrição de chave estrangeira, selecione Script Key As, depois selecione DROP e CREATE To, e depois selecione Nova Janela do Editor de Consultas. O script resultante deve ser semelhante ao exemplo a seguir do banco de dados de exemplo 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. Na parte ALTER TABLE ... ADD CONSTRAINT do script, modifique a nova restrição de chave estrangeira e especifique a opção NOT FOR REPLICATION. Por exemplo:

    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
    

Próximos passos