Eliminar tablas base de datos SQL Server

Hola tyros!

Yo de nuevo, Hoy voy a mostrarles como eliminar todas las tablas de una base de datos SQL Server.

NOTA IMPORTANTE: Probado con SQL Server 2014, Para versiones anteriores, requerirá cambios mínimos.

Este es el código:

use tu_base_de_datos
go
declare @schemaName nvarchar(100), @tableName varchar(500), @sql nvarchar(max), @schemaToDrop nvarchar(100)
set @schemaToDrop = 'dbo'
--Tablas a omitir
create table ##tmp_tables(
 id int not null identity(1,1),
 n_schema nvarchar(100) default(N'dbo'),
 n_table nvarchar(100)
)
insert into ##tmp_tables(n_table) values('table1')
insert into ##tmp_tables(n_table) values('table2')
insert into ##tmp_tables(n_table) values('table13')


declare cur cursor 

for select  s.[name] as n_schema , p.[name] as n_table from sys.objects p join sys.schemas s on p.schema_id=s.schema_id where p.type_desc='USER_TABLE' and s.name=@schemaToDrop and p.name collate Latin1_General_CI_AI not in(select n_table collate Latin1_General_CI_AI from ##tmp_tables)
open cur
fetch next from cur into @schemaName, @tableName
while @@fetch_status = 0
begin
 set @sql = concat('drop table [',@schemaName,'].[',@tableName,']')
    exec(@sql)
    fetch next from cur into @schemaName, @tableName
end
close cur
deallocate cur

drop table  ##tmp_tables


No hay comentarios:

Publicar un comentario