SQL Server and Drop all Objects (Tables/Views/Stored Procedures etc.)




- April 20, 2015

Rest of the Story:

The following SQL will drop all SQL Server objects within a database.

/* Drop all non-system stored procs */ 
DECLARE @name VARCHAR(128)    
DECLARE @SQL VARCHAR(254)    
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 ORDER BY [name])    
WHILE @name is not null    
BEGIN    
    SELECT @SQL = 'DROP PROCEDURE [dbo].[' + RTRIM(@name) +']'    
    EXEC (@SQL)    
    PRINT 'Dropped Procedure: ' + @name    
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 AND [name] > @name ORDER BY [name])    
END    
GO  
/* Drop all views */     
DECLARE @name VARCHAR(128)    
DECLARE @SQL VARCHAR(254)    
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 ORDER BY [name])    
WHILE @name IS NOT NULL    
BEGIN    
    SELECT @SQL = 'DROP VIEW [dbo].[' + RTRIM(@name) +']'    
    EXEC (@SQL)    
    PRINT 'Dropped View: ' + @name    
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 AND [name] > @name ORDER BY [name])    
END    
GO  
/* Drop all functions */     
DECLARE @name VARCHAR(128)    
DECLARE @SQL VARCHAR(254)    
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 ORDER BY [name])    
WHILE @name IS NOT NULL    
BEGIN    
    SELECT @SQL = 'DROP FUNCTION [dbo].[' + RTRIM(@name) +']'    
    EXEC (@SQL)    
    PRINT 'Dropped Function: ' + @name    
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 AND [name] > @name ORDER BY [name])    
END    
GO  
/* Drop all Foreign Key constraints */     
DECLARE @name VARCHAR(128)    
DECLARE @constraint VARCHAR(254)    
DECLARE @SQL VARCHAR(254)    
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)    
WHILE @name is not null    
BEGIN    
    SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)    
    WHILE @constraint IS NOT NULL    
    BEGIN    
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT ' + RTRIM(@constraint)    
        EXEC (@SQL)    
        PRINT 'Dropped FK Constraint: ' + @constraint + ' on ' + @name    
        SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)    
    END    
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)    
END    
GO  
/* Drop all Primary Key constraints */     
DECLARE @name VARCHAR(128)    
DECLARE @constraint VARCHAR(254)    
DECLARE @SQL VARCHAR(254)    
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)    
WHILE @name IS NOT NULL    
BEGIN    
    SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)    
    WHILE @constraint is not null    
    BEGIN    
        SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT ' + RTRIM(@constraint)    
        EXEC (@SQL)    
        PRINT 'Dropped PK Constraint: ' + @constraint + ' on ' + @name    
        SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)    
    END    
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)    
END    
GO  
/* Drop all tables */     
DECLARE @name VARCHAR(128)    
DECLARE @SQL VARCHAR(254)    
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 ORDER BY [name])    
WHILE @name IS NOT NULL    
BEGIN    
    SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'    
    EXEC (@SQL)    
    PRINT 'Dropped Table: ' + @name    
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name])    
END    
GO