How to drop all tables from a database with one SQL query?

后端 未结 12 2080
盖世英雄少女心
盖世英雄少女心 2020-12-12 09:44

I don\'t want to type all tables\' name to drop all of them. Is it possible with one query?

12条回答
  •  伪装坚强ぢ
    2020-12-12 10:01

    I Know this question is very old but every Time i need this code .. by the way if you have tables and views and Functions and PROCEDURES you can delete it all by this Script .. so why i post this Script ?? because if u delete all tables you will need to delete all views and if you have Functions and PROCEDURES you need to delete it too
    i Hope it will help someone

    DECLARE @sql NVARCHAR(max)=''
    
     SELECT @sql += ' Drop table ' + QUOTENAME(TABLE_SCHEMA) + '.'+ QUOTENAME(TABLE_NAME) 
    + '; '
    FROM   INFORMATION_SCHEMA.TABLES
    WHERE  TABLE_TYPE = 'BASE TABLE'
    
    Exec Sp_executesql @sql
    
    
     DECLARE @sql VARCHAR(MAX) = ''
        , @crlf VARCHAR(2) = CHAR(13) + CHAR(10) ;
    
     SELECT @sql = @sql + 'DROP VIEW ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + 
     QUOTENAME(v.name) +';' + @crlf
     FROM   sys.views v
    
     PRINT @sql;
     EXEC(@sql);
    
     declare @procName varchar(500)
     declare cur cursor 
    
     for select [name] from sys.objects where type = 'p'
     open cur
     fetch next from cur into @procName
     while @@fetch_status = 0
     begin
      exec('drop procedure [' + @procName + ']')
    fetch next from cur into @procName
     end
      close cur
      deallocate cur
    
      Declare @sql NVARCHAR(MAX) = N'';
    
        SELECT @sql = @sql + N' DROP FUNCTION ' 
                   + QUOTENAME(SCHEMA_NAME(schema_id)) 
                   + N'.' + QUOTENAME(name)
        FROM sys.objects
      WHERE type_desc LIKE '%FUNCTION%';
    
       Exec sp_executesql @sql
      GO
    

提交回复
热议问题