SQL Server: Como ignorar a integridade referencial até COMMIT?

Eu tenho um processo para mover linhas de um banco de dados para outro. Devido a algumas cadeias de referência de chave estrangeira circular, não consigo remover as linhas do banco de dados antigo, nem inseri-las no novo banco de dados.

Como toda a operação acontece em uma transação1, quero que o SQL Server ignore falhas de integridade referencial até ligar paraCOMMIT TRANSACTION.

Por exemplo2:

   Table: Turboencabulators         Table: Marselvanes
   =========================        =======================
PK TurboencabulatorID int    /-> PK MarselvaneID       int
^  MarselvanesID      int --/       HasGrammeter       bit
|                                   PantametricFan     varchar(50)
+-------------------------------    TurboencabulatorID int

Se eu tentar inserir oturboencabulador na nova tabela, ele falhará sem omarselvane já está lá. A reversão do pedido tem o mesmo problema.

Ao tentar remover as linhas antigas, não posso excluir uma até que a outra seja excluída.

eu tentei fazer umnsistema de fase, em que todas as linhas são inseridas com qualquer coluna que esteja sob restrição de chave estrangeira definida comonulo. Então eu atualizo todas as linhas inseridas, colocando os valores ausentes adequados. Em seguida, para excluir as linhas de origem, anulo todas as colunas afetadas por umFKe exclua as linhas reais.3

O que eu realmente preferiria é apenas fazer minhas operações T-SQL e fazer com que o SQL Server não me diga até eu tentar chamar commit.

Notas

1distribuído
2artificial hipotético
3o que não estou mais fazendo

questionAnswers(2)

yourAnswerToTheQuestion