SET NOCOUNT ON
DECLARE @FKS TABLE ([Name] NVARCHAR(300) NOT NULL PRIMARY KEY, [Stmt] NVARCHAR(MAX) NOT NULL)
DECLARE @Name sysname
DECLARE @Stmt NVARCHAR(MAX)
DECLARE @Msg NVARCHAR(MAX)
INSERT INTO @FKS
( [Name], [Stmt] )
SELECT
SCHEMA_NAME([schema_id]) + '.' + [name], 'ALTER TABLE ['+ OBJECT_SCHEMA_NAME([parent_object_id]) + '].[' + OBJECT_NAME([parent_object_id]) + '] WITH CHECK CHECK CONSTRAINT ' + QUOTENAME([name]) + ';'
FROM [sys].[foreign_keys]
ORDER BY [name]
WHILE EXISTS (SELECT * FROM @FKS)
BEGIN
SELECT TOP(1)
@Name = [Name], @Stmt = [Stmt]
FROM @FKS
ORDER BY [Name]
RAISERROR(@Name, 10, 1) WITH NOWAIT
BEGIN TRY
EXEC sp_executesql @Stmt
END TRY
BEGIN CATCH
SET @Msg = ERROR_MESSAGE()
RAISERROR(@Msg, 16, 1)
END CATCH
DELETE FROM @FKS WHERE [Name] = @Name
END
SELECT * FROM [sys].[foreign_keys] WHERE [is_not_trusted] = 1
GO