I have a database. Inside the database, I created more than 7000 tables and SQL objects. I need to drop the selected unwanted SQL objects and tables. However, a lot of tables have constraints to stop the dropping objects. So now I need to drop the constraints first. Like check the objects have constraints or not. if has dropped the constraints, then drop the selected unwanted objects. The query should be one query in the SQL server.
Please help me above problem.
–Use SampleDB
DECLARE @dropStatements NVARCHAR(MAX) = ”;
— 1.Select and drop tables
SELECT @dropStatements = @dropStatements + ‘DROP TABLE ‘ + QUOTENAME(SCHEMA_NAME(schema_id)) + ‘.’ + QUOTENAME(name) + ‘;’ + CHAR(13)
FROM sys.tables
WHERE type = ‘U’ and name IN (‘SampleTable132’, ‘SampleTable123′,’SampleTable143’, ‘SampleTable135′,’SampleTable163’, ‘SampleTable134′,’SampleTable426’, ‘SampleTable287’);
— 2.Select and drop views
SELECT @dropStatements = @dropStatements + ‘DROP VIEW ‘ + QUOTENAME(SCHEMA_NAME(schema_id)) + ‘.’ + QUOTENAME(name) + ‘;’ + CHAR(13)
FROM sys.views
WHERE type = ‘V’ and name IN (‘SampleView312′,’SampleView454′,’SampleView273′,’SampleView456′,’SampleView658′,’SampleView132’);
— 3.Drop CLR stored procedures
SELECT @dropStatements = @dropStatements + ‘DROP PROCEDURE ‘ + QUOTENAME(SCHEMA_NAME(schema_id)) + ‘.’ + QUOTENAME(name) + ‘;’ + CHAR(13)
FROM sys.objects
WHERE type = ‘PC’ AND name IN (‘SampleProcedure’);
— 4.Drop SQL stored procedures
SELECT @dropStatements = @dropStatements + ‘DROP PROCEDURE ‘ + QUOTENAME(SCHEMA_NAME(schema_id)) + ‘.’ + QUOTENAME(name) + ‘;’ + CHAR(13)
FROM sys.objects
WHERE type = ‘P’ AND name IN (‘SampleProcedure’);
— 5.Drop SQL scalar functions
SELECT @dropStatements = @dropStatements + ‘DROP FUNCTION ‘ + QUOTENAME(SCHEMA_NAME(schema_id)) + ‘.’ + QUOTENAME(name) + ‘;’ + CHAR(13)
FROM sys.objects
WHERE type = ‘FN’ AND name IN (‘SampleFunction’);
— 6.Drop CLR scalar functions
SELECT @dropStatements = @dropStatements + ‘DROP FUNCTION ‘ + QUOTENAME(SCHEMA_NAME(schema_id)) + ‘.’ + QUOTENAME(name) + ‘;’ + CHAR(13)
FROM sys.objects
WHERE type = ‘FS’ AND name IN (‘SampleFunction’);
— 7.Drop table-valued functions
SELECT @dropStatements = @dropStatements + ‘DROP FUNCTION ‘ + QUOTENAME(SCHEMA_NAME(schema_id)) + ‘.’ + QUOTENAME(name) + ‘;’ + CHAR(13)
FROM sys.objects
WHERE type = ‘TF’ AND name IN (‘SampleFunction’);
— 8.Drop inline table-valued functions
SELECT @dropStatements = @dropStatements + ‘DROP FUNCTION ‘ + QUOTENAME(SCHEMA_NAME(schema_id)) + ‘.’ + QUOTENAME(name) + ‘;’ + CHAR(13)
FROM sys.objects
WHERE type = ‘IF’ AND name IN (‘SampleFunction’);
— 9.Drop synonyms
SELECT @dropStatements = @dropStatements + ‘DROP SYNONYM ‘ + QUOTENAME(SCHEMA_NAME(schema_id)) + ‘.’ + QUOTENAME(name) + ‘;’ + CHAR(13)
FROM sys.synonyms
WHERE type = ‘SN’ AND name IN (‘SampleFunction’);
— 10.Drop triggers
SELECT @dropStatements = @dropStatements + ‘DROP TRIGGER ‘ + QUOTENAME(name) + ‘;’ + CHAR(13)
FROM sys.triggers
WHERE type = ‘U’ and name IN (‘SampleTrigger190′,’SampleTrigger178′,’SampleTrigger156′,’SampleTrigger134′,’SampleTrigger146’);
— Print the drop statements for verification
PRINT ‘The following objects will be dropped:’;
PRINT @dropStatements;
— Execute the drop statements
EXEC sp_executesql @dropStatements;
GO
For above code I can able to drop the objects but I can’t able to drop constrains. I need to add the drop constraints query to above query or else take your own query. but don’t use cursor
JANAKIRAMAN V is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.