Monday, October 24, 2016

SQL for Deletion of Full Database

SQL to generate delete foreign Key Constraints:

-- ALTER TABLE <TABLE_NAME> DROP CONSTRAINT <FOREIGN_KEY_NAME>
SELECT  'ALTER TABLE ' + sch.name + '.' + tab1.name + ' DROP CONSTRAINT [' + obj.name + ']' as DropSQL,
obj.name AS FK_NAME,
    sch.name AS [schema_name],
    tab1.name AS [table],
    col1.name AS [column],
    tab2.name AS [referenced_table],
    col2.name AS [referenced_column]
FROM sys.foreign_key_columns fkc
INNER JOIN sys.objects obj
    ON obj.object_id = fkc.constraint_object_id
INNER JOIN sys.tables tab1
    ON tab1.object_id = fkc.parent_object_id
INNER JOIN sys.schemas sch
    ON tab1.schema_id = sch.schema_id
INNER JOIN sys.columns col1
    ON col1.column_id = parent_column_id AND col1.object_id = tab1.object_id
INNER JOIN sys.tables tab2
    ON tab2.object_id = fkc.referenced_object_id
INNER JOIN sys.columns col2
    ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id

Based on an answer by Gustavo Rubio here : http://stackoverflow.com/questions/483193/how-can-i-list-all-foreign-keys-referencing-a-given-table-in-sql-server


Sql to generate delete tables in the database:
SELECT 'Drop Table ' + TABLE_SCHEMA + '.[' + TABLE_NAME + ']'
FROM information_schema.tables
WHERE TABLE_TYPE='BASE TABLE'