Monday, 1 July 2013

GENERIC 2 .DROP FOREIGN KEY CONSTRAINTS WHICH ARE NOT THERE IN LATER VERSION

USE DBName2 
GO 
SELECT 'USE [DBName2]' 
UNION ALL 
SELECT 'GO' 
UNION ALL 
SELECT '-- DROP FOREIGN KEY CONSTRAINTS WHICH ARE NOT THERE IN LATER VERSION' 
UNION ALL 
SELECT DISTINCT 
'IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE CONSTRAINT_NAME =N'''+A.CONSTRAINT_NAME +''' AND TABLE_NAME=N'''+A.TABLE_NAME+''' AND TABLE_SCHEMA = '''+A.TABLE_SCHEMA+''' ) ALTER TABLE ['+A.TABLE_SCHEMA+'].'+A.TABLE_NAME +' DROP CONSTRAINT ['+ A.CONSTRAINT_NAME +']' + ' GO'
FROM 
( 
SELECT T.TABLE_SCHEMA collate SQL_Latin1_General_CP1_CI_AS AS TABLE_SCHEMA,T.TABLE_NAME collate SQL_Latin1_General_CP1_CI_AS AS TABLE_NAME, RC.CONSTRAINT_NAME collate SQL_Latin1_General_CP1_CI_AS AS CONSTRAINT_NAME
FROM [DBName2].INFORMATION_SCHEMA.TABLES T 
JOIN [DBName2].INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU ON KCU.TABLE_NAME = T.TABLE_NAME 
JOIN [DBName2].INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC ON RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME

EXCEPT 

SELECT T.TABLE_SCHEMA ,T.TABLE_NAME , RC.CONSTRAINT_NAME FROM [DBName1].INFORMATION_SCHEMA.TABLES T
JOIN [DBName1].INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU ON KCU.TABLE_NAME = T.TABLE_NAME 
JOIN [DBName1].INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC ON RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME

No comments:

Post a comment