No Pesquisador de objetos do SQL Server, ao selecionar e criar scripts de uma restrição de chave estrangeira, o código a seguir é gerado.
USE [MyTestDatabase]
GO
ALTER TABLE [dbo].[T2] WITH NOCHECK ADD CONSTRAINT [FK_T2_T1] FOREIGN KEY([T1ID])
REFERENCES [dbo].[T1] ([T1ID])
GO
ALTER TABLE [dbo].[T2] CHECK CONSTRAINT [FK_T2_T1]
GO
Qual é o objetivo da última declaração "ALTER TABLE CHECK CONSTRAINT"? Não parece importar se é executado ou não. Ele não falha nos dados incorretos existentes, nem altera que a restrição será aplicada a novos dados.
Obrigado!