Last active
June 3, 2019 14:04
-
-
Save pimentelra/babfec1db1f30e7eaa9f2d6d1fad56e8 to your computer and use it in GitHub Desktop.
Drop all the objects in a schema
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- SQL SERVER | |
-- change values inserted in @schema_list to the schemas you want to drop the objects from | |
SET NOCOUNT ON; | |
DECLARE | |
@sql NVARCHAR(MAX); | |
SET @sql = ''; | |
DECLARE | |
@schema_list TABLE ( | |
schema_name NVARCHAR(100) | |
); | |
INSERT INTO @schema_list | |
VALUES ('schema_1') | |
, ('schema_2') | |
SELECT @sql += | |
'ALTER TABLE ' + QUOTENAME(SCHEMA_NAME(t.schema_id)) | |
+ '.' + QUOTENAME(OBJECT_NAME(s.parent_object_id)) | |
+ ' DROP CONSTRAINT ' + QUOTENAME(s.name) + ';' | |
FROM sys.foreign_keys s | |
JOIN sys.tables t ON s.parent_object_id = t.object_id | |
JOIN sys.tables t2 ON s.referenced_object_id = t2.object_id | |
WHERE t2.schema_id IN ( SELECT SCHEMA_ID(schema_name) FROM @schema_list ) | |
SELECT @sql += | |
'DROP ' + | |
CASE | |
WHEN type = 'SO' THEN 'SEQUENCE' | |
WHEN type IN ('P', 'PC') THEN 'PROCEDURE' | |
WHEN type = 'U' THEN 'TABLE' | |
WHEN type IN ('IF', 'TF', 'FN') THEN 'FUNCTION' | |
WHEN type = 'V' THEN 'VIEW' | |
END + | |
' ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + ';' | |
FROM sys.objects | |
WHERE schema_id IN ( SELECT SCHEMA_ID(schema_name) FROM @schema_list ) | |
AND type IN ('SO', 'P', 'PC', 'U', 'IF', 'TF', 'FN', 'V') | |
ORDER BY CASE | |
WHEN type = 'SO' THEN 1 | |
WHEN type IN ('P', 'PC') THEN 5 | |
WHEN type = 'U' THEN 4 | |
WHEN type IN ('IF', 'TF', 'FN') THEN 2 | |
WHEN type = 'V' THEN 3 | |
END | |
SELECT @sql += | |
'DROP XML SCHEMA COLLECTION ' | |
+ QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + ';' | |
FROM sys.xml_schema_collections | |
WHERE schema_id IN ( SELECT SCHEMA_ID(schema_name) FROM @schema_list ) | |
SELECT @sql += | |
'DROP SCHEMA ' + QUOTENAME(schema_name) + ';' | |
FROM @schema_list; | |
EXEC sp_executesql @sql; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment