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 Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System)
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.
Usar o SQL Server Management Studio
Para desabilitar uma restrição de chave estrangeira para replicação
No Pesquisador de Objetos, expanda a tabela com a restrição de chave estrangeira que você deseja modificar e expanda a pasta Chaves .
Clique com o botão direito do mouse na restrição de chave estrangeira e selecione Modificar.
Na caixa de diálogo Relações de Chaves Estrangeiras , selecione o valor Não em Impor para Replicação.
Selecione Fechar.
Usar o Transact-SQL
Para desabilitar uma restrição de chave estrangeira para replicação
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 .
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
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