1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| WITH
T AS
(SELECT principal_id AS P
FROM sys.database_principals
WHERE name = 'TOTO'),
T_DROP AS
(
SELECT 1 AS ORDRE1,
CASE type_desc
WHEN 'FOREIGN_KEY_CONSTRAINT' THEN 0
WHEN 'VIEW' THEN 1
WHEN 'SQL_STORED_PROCEDURE' THEN 2
WHEN 'AGGREGATE_FUNCTION' THEN 3
WHEN 'CLR_SCALAR_FUNCTION' THEN 4
WHEN 'CLR_STORED_PROCEDURE' THEN 5
WHEN 'CLR_TABLE_VALUED_FUNCTION' THEN 6
WHEN 'CLR_TRIGGER' THEN 7
WHEN 'REPLICATION_FILTER_PROCEDURE' THEN 8
WHEN 'SQL_INLINE_TABLE_VALUED_FUNCTION' THEN 9
WHEN 'SQL_SCALAR_FUNCTION' THEN 10
WHEN 'SQL_TABLE_VALUED_FUNCTION' THEN 11
WHEN 'SYNONYM' THEN 12
WHEN 'SERVICE_QUEUE' THEN 50
WHEN 'USER_TABLE' THEN 51
WHEN 'TABLE_TYPE' THEN 100
WHEN 'PLAN_GUIDE' THEN 101
WHEN 'RULE' THEN 102
WHEN 'SEQUENCE_OBJECT' THEN 103
WHEN 'DEFAULT_CONSTRAINT' THEN 104
END AS ORDRE2,
'DROP ' + type_desc + '[' + s.name + '].[' + o.name + '];' COLLATE French_CI_AI AS SQL_COMMAND
FROM sys.objects AS o
JOIN sys.schemas AS s
ON o.schema_id = s.schema_id
WHERE o.principal_id IN (SELECT P FROM T)
UNION ALL
SELECT 2 AS ORDRE1,
CASE type_desc
WHEN 'FOREIGN_KEY_CONSTRAINT' THEN 0
WHEN 'VIEW' THEN 1
WHEN 'SQL_STORED_PROCEDURE' THEN 2
WHEN 'AGGREGATE_FUNCTION' THEN 3
WHEN 'CLR_SCALAR_FUNCTION' THEN 4
WHEN 'CLR_STORED_PROCEDURE' THEN 5
WHEN 'CLR_TABLE_VALUED_FUNCTION' THEN 6
WHEN 'CLR_TRIGGER' THEN 7
WHEN 'REPLICATION_FILTER_PROCEDURE' THEN 8
WHEN 'SQL_INLINE_TABLE_VALUED_FUNCTION' THEN 9
WHEN 'SQL_SCALAR_FUNCTION' THEN 10
WHEN 'SQL_TABLE_VALUED_FUNCTION' THEN 11
WHEN 'SYNONYM' THEN 12
WHEN 'SERVICE_QUEUE' THEN 50
WHEN 'USER_TABLE' THEN 51
WHEN 'TABLE_TYPE' THEN 100
WHEN 'PLAN_GUIDE' THEN 101
WHEN 'RULE' THEN 102
WHEN 'SEQUENCE_OBJECT' THEN 103
WHEN 'DEFAULT_CONSTRAINT' THEN 104
END AS ORDRE2,
'DROP ' + type_desc + '[' + s.name + '].[' + o.name + '];' COLLATE French_CI_AI
FROM sys.objects AS o
JOIN sys.schemas AS s
ON o.schema_id = s.schema_id
WHERE o.principal_id IS NULL
AND s.principal_id IN (SELECT P FROM T)
UNION ALL
SELECT 3, 0, 'DROP SCHEMA [' + name + '];' COLLATE French_CI_AI
FROM sys.schemas AS s
WHERE principal_id IN (SELECT P FROM T)
)
SELECT SQL_COMMAND
FROM T_DROP
ORDER BY ORDRE1, ORDRE2 |