Skip to content
 

Dynamically Drop Table Constraints

System generated constraints take on a naming convention of their own. Unfortunately the naming convention in production is rarely the same name in the uncontrolled environments. Using this script, you can dynamically drop all system generated constraints. It doesn’t go as far are re-creating them, however it’s a start.

Just change the values of the @TableSchema and TableName variables below:


DECLARE @TableName		varchar(100)
DECLARE @TableSchema	varchar(100)
DECLARE @CountConst		int
DECLARE @default		sysname
DECLARE @SQLDropMe		varchar(max)
DECLARE @ColumnNames	varchar(max)

SET @TableSchema = 'dbo'
SET @TableName = 'employees'

--------------------------------------------- Store Existing Column Names
SET @ColumnNames = SUBSTRING((SELECT
			',' + r.COLUMN_NAME
			FROM(
				SELECT COLUMN_NAME
				FROM INFORMATION_SCHEMA.COLUMNS
				WHERE TABLE_SCHEMA = @TableSchema AND
					TABLE_NAME = @TableName
			) r
			FOR XML PATH('')   ), 2, 8000)
--------------------------------------------- /Store Existing Column Names

--------------------------------------------- Insert contents into temp table

EXEC ('SELECT * INTO ' + @TableSchema + '.tmp01_' + @TableName + ' FROM ' + @TableSchema + '.' + @TableName)

--------------------------------------------- /Insert contents into temp table

--------------------------------------------- Drop all the constraints

DECLARE @TableConstraints TABLE
(
	ID				int		IDENTITY(1,1)
	,DefaultConst	sysname
)

INSERT INTO @TableConstraints
(
	DefaultConst
)
SELECT object_name(default_object_id)
FROM sys.columns
WHERE object_id = object_id(@TableSchema + '.' + @TableName)
	AND object_name(default_object_id) IS NOT NULL

SET @CountConst = (SELECT MAX(ID) FROM @TableConstraints)

WHILE @CountConst > 0
BEGIN
	SET @Default = (SELECT DefaultConst FROM @TableConstraints WHERE ID = @CountConst)
	SET @SQLDropMe = 'ALTER TABLE ' + @TableSchema + '.' + @TableName + ' DROP CONSTRAINT ' + @default
	SELECT @SQLDropMe
	--EXEC (@SQLDropMe)

	SET @CountConst = @CountConst - 1
END
--------------------------------------------- /Drop all the constraints


Popular search terms:

One Comment

  1. Sanjay Rajpal says:

    How to enable and disable constraints in sql server 2008 ?

post a comment OR Post Your Question on our ASK! Community!