Desabilitar restrições de chave estrangeira para replicação
Aplica-se a: SQL Server 2016 (13.x) e posterior
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Banco de Dados do Azure Synapse Analytics
Analytics 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
No Explorador de Objetos , expanda a tabela com a restrição de chave estrangeira que deseja modificar e expanda, em seguida, a pasta Chaves.
Clique com o botão direito do rato na restrição de chave estrangeira e, em seguida, selecione Modificar.
Na caixa de diálogo Relações de Chave Estrangeira, selecione um valor de Sem para Enforce For Replication.
Selecione Fechar.
Use Transact-SQL
Para desabilitar uma restrição de chave estrangeira para replicação
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 .
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
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