Monday 1 July 2013

GENERIC 11. Drop and Create Default Constraints

USE DBName2
GO
SELECT 'USE [DBName2] '
UNION ALL
SELECT 'GO'
/*
UNION ALL
SELECT '--DROP DEFAULT CONSTRAINTS IN EARLIER VERSION BEFORE CREATE DEFAULT CONSTRAINTS FROM LATER VERSION'
UNION ALL
SELECT
DISTINCT
'IF EXISTS (SELECT * FROM dbo.sysobjects WHERE PARENT_OBJ = OBJECT_ID(N''['+S.name +'].'+T.name+''') AND NAME = '''+SDC.name +''' AND type = ''D'')
ALTER TABLE ['+S.name +'].['+ T.NAME + '] DROP CONSTRAINT ['+ SDC.NAME + ']'+ ' GO'
FROM [DBName2].SYS.TABLES T
JOIN [DBName2].SYS.schemas S ON T.schema_id = S.schema_id
JOIN [DBName2].SYS.ALL_OBJECTS AO on AO.name = T.name AND S.schema_id = AO.schema_id
join [DBName2].SYS.ALL_COLUMNS AC on AO.object_id = AC.object_id
JOIN [DBName2].SYS.DEFAULT_CONSTRAINTS SDC ON SDC.parent_OBJECT_ID = AC.object_id AND SDC.parent_column_id = AC.column_id
UNION ALL
SELECT 'GO'
*/

UNION ALL
SELECT '--CREATE DEFAULT CONSTRAINTS IN EARLIER VERSION FROM LATER VERSION'
UNION ALL
SELECT --DISTINCT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,CONSTRAINT_DEFINITION
DISTINCT
'IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE PARENT_OBJ = OBJECT_ID(N''['+TABLE_SCHEMA+'].'+TABLE_NAME+''') AND NAME = '''+CONSTRAINT_NAME +''' AND type = ''D'') ALTER TABLE ['+TABLE_SCHEMA+'].['+TABLE_NAME+'] ADD CONSTRAINT ['+CONSTRAINT_NAME+'] DEFAULT '+CONSTRAINT_DEFINITION+' FOR [' + COLUMN_NAME +'] '+ ' GO'
FROM
(SELECT S.name AS TABLE_SCHEMA,T.name AS TABLE_NAME,AC.name AS COLUMN_NAME,SDC.name AS CONSTRAINT_NAME,SDC.definition AS CONSTRAINT_DEFINITION
FROM [DBName1].SYS.TABLES T
JOIN [DBName1].SYS.schemas S ON T.schema_id = S.schema_id
JOIN [DBName1].SYS.ALL_OBJECTS AO on AO.name = T.name AND S.schema_id = AO.schema_id
join [DBName1].SYS.ALL_COLUMNS AC on AO.object_id = AC.object_id
JOIN [DBName1].SYS.DEFAULT_CONSTRAINTS SDC ON SDC.parent_OBJECT_ID = AC.object_id AND SDC.parent_column_id = AC.column_id
EXCEPT
SELECT S.name COLLATE SQL_Latin1_General_CP1_CI_AS AS TABLE_SCHEMA,T.name COLLATE SQL_Latin1_General_CP1_CI_AS AS TABLE_NAME,AC.name COLLATE SQL_Latin1_General_CP1_CI_AS AS COLUMN_NAME,SDC.name COLLATE SQL_Latin1_General_CP1_CI_AS AS CONSTRAINT_NAME,SDC.definition COLLATE SQL_Latin1_General_CP1_CI_AS AS CONSTRAINT_DEFINITION
FROM [DBName2].SYS.TABLES T
JOIN [DBName2].SYS.schemas S ON T.schema_id = S.schema_id
JOIN [DBName2].SYS.ALL_OBJECTS AO on AO.name = T.name AND S.schema_id = AO.schema_id
join [DBName2].SYS.ALL_COLUMNS AC on AO.object_id = AC.object_id
JOIN [DBName2].SYS.DEFAULT_CONSTRAINTS SDC ON SDC.parent_OBJECT_ID = AC.object_id AND SDC.parent_column_id = AC.column_id
) A

No comments:

Post a Comment