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