Please refer to this link for scripts for drop constraints and tables. http://www.toadworld.com/platforms/sql-server/w/wiki/10407.delete-user-objects-from-a-database.aspx However, it doesn't work with tables defined in a schema and required me to do some changes. Please find the modified code below:
-- DROP Foreign Keys
SET NOCOUNT ON
DECLARE @fk_id int, @fk_name nvarchar(500), @parent_id int, @parent_name nvarchar(500), @schema_name nvarchar(500)
declare @sql nvarchar(2000)
DECLARE fk_cursor CURSOR FOR
SELECT [name] as fkname, schema_name([SCHEMA_ID]) as schemaname,object_name(parent_object_id) as parentname
from sys.objects where [type] = 'F'
OPEN fk_cursor
FETCH NEXT FROM fk_cursor
INTO @fk_name, @schema_name, @parent_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N''
SET @sql = N'ALTER TABLE [' + @schema_name + N'].[' + @parent_name + N'] DROP ' + @fk_name
PRINT @sql
FETCH NEXT FROM fk_cursor INTO @fk_name, @schema_name, @parent_name
END
CLOSE fk_cursor
DEALLOCATE fk_cursor
-- DROP user tables
SET NOCOUNT ON
DECLARE @tbl_name nvarchar(500)
DECLARE tbl_cursor CURSOR FOR
SELECT schema_name([SCHEMA_ID]) as schemaname, [name]
from sys.objects where [type] = 'U' order by [name]
OPEN tbl_cursor
FETCH NEXT FROM tbl_cursor
INTO @schema_name, @tbl_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'DROP TABLE [' + @schema_name + '].[' + @tbl_name + N'] '
PRINT @sql
FETCH NEXT FROM tbl_cursor INTO @schema_name, @tbl_name
END
CLOSE tbl_cursor
DEALLOCATE tbl_cursor
Caution: Please peruse the script before executing it!
Please refer to my blog post on this: http://zen-and-art-of-programming.blogspot.in/2015/04/cleanup-restore-master-database-in-sql.html