NoCheck Constraint
Ontem um amigo daqui da empresa foi rodar um delete e para sua surpresa recebeu a seguinte mensagem.
delete from tabela where ID = 3
Msg 8630, Level 17, State 34, Line 1
Internal Query Processor Error: The query processor encountered an unexpected error during execution.
Ou seja o otimizador não agüentou o tranco, tudo bem que a tabela tem apenas 418 foreign keys, ou seja, para poder efetuar o delete o SQL terá que ler nas 418 tabelas se o ID = 3 existe pois senão ele não pode deixar o delete acontecer.
Como eu tenho certeza de que não existe nenhuma referencia com as outras tabelas para resolver o problema tive que desabilitar todas constraints das tabelas e efetuar o delete e depois habilitar as constraints.
— Executei este comando para ver as foreign keys
sp_fKeys corcc002
Copiei a coluna fkTable_Name e criei um comando para desabilitar e outro para habilitar todas as constraints desta tabelas. Segue um exemplo do comando
— Comando para desabilitar foreign key
ALTER TABLE TabelaB NOCHECK CONSTRAINT ALL
— Comando para habilitar foreign key
ALTER TABLE TabelaB CHECK CONSTRAINT ALL