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

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)

Você pode desabilitar as 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ê publicar dados de uma versão anterior do SQL Server.

Observação

Se uma tabela for publicada utilizando replicação, as restrições de chave estrangeira serão desabilitadas automaticamente para operações executadas por agentes de replicação. A opção NOT FOR REPLICATION é especificada por padrão para as restrições de chave estrangeira e para as restrições de verificação; as restrições são impostas para operações de usuários mas não operações de agentes. 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á foi verificada no Publicador quando os dados foram inseridos, atualizados ou excluídos originalmente.

Permissões do

Exige a permissão ALTER na tabela.

Use SQL Server Management Studio.

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

  1. No Pesquisador de Objetos, expanda a tabela com a restrição de chave estrangeira que você deseja modificar e expanda a pasta Chaves .

  2. Clique com o botão direito do mouse na restrição de chave estrangeira e selecione Modificar.

  3. Na caixa de diálogo Relações de Chaves Estrangeiras , selecione o valor Não em Impor para Replicação.

  4. Selecione Fechar.

Usar o Transact-SQL

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

  1. Para executar esta tarefa no Transact-SQL, faça o script da restrição de chave estrangeira. No Pesquisador de Objetos, expanda a tabela com a restrição de chave estrangeira que você deseja modificar e expanda a pasta Chaves .

  2. Clique com o botão direito do mouse na restrição de chave estrangeira, selecione Realizar o Script da Chave como, selecione DROP e CREATE TO e Nova Janela do Editor de Consultas. O script resultante deve ser semelhante ao seguinte exemplo 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óximas etapas