it-swarm-es.com

Microsoft SQL Server Management Studio 2008 eliminando varias tablas de usuarios

¿Existe una manera fácil de eliminar varias tablas en la base de datos sin eliminar la base de datos y volver a crearla? En este caso, tenemos más de 100 para eliminar.

Estoy lo suficientemente feliz de eliminar todas tablas de usuario y reimportar los datos necesarios, pero no puedo tocar ninguna de las configuraciones de seguridad de la base de datos.

12
Ryaner

En el Explorador de objetos, navegue hasta la base de datos que le interesa. Expanda y haga clic en la carpeta Tablas. Presione F7 para abrir los detalles del Explorador de objetos. Seleccione las tablas que desea eliminar y presione la tecla eliminar.

26
GilaMonster

Cualquier motivo para no hacerlo directamente en T-SQL (con DROP TABLE )? Entonces es solo un caso de crear el script SQL apropiado (muy posiblemente autogenerarlo si tiene una lista de las tablas que necesita eliminar) y ya está.

2
Jon Skeet

Puede eliminar varias tablas iterando a través de ellas y ejecutando esto:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

Sin embargo, si intenta eliminar una tabla a la que hace referencia una clave externa, obtendrá un error como

Msg 3726, Level 16, State 1, Line 1
Could not drop object 'dbo.Table1' because it is referenced by a FOREIGN KEY constraint.

Si solo desea hacerlo manualmente, simplemente repita la declaración unas cuantas veces hasta que se eliminen las tablas con la referencia (por ejemplo, si Table2 tiene una referencia a Table1, entonces, en la primera ejecución, Table1 no se puede eliminar mientras Table2 se elimina, y en el segundo ejecutar Table1 se puede eliminar ya que Table2 ya no existe).

0
Ole Lynge

Tsql responde como se sugiere. No pude hacer que la tabla desplegable funcionara en tsql, pero esto funcionó.

declare @TABLE varchar(250)

declare select_cursor cursor for
select name from sysobjects where type='U'

open select_cursor

fetch next from select_cursor
into @TABLE

while @@FETCH_STATUS = 0
begin
    print 'DROP TABLE '[email protected]

    fetch next from select_cursor
    into @TABLE
end

close select_cursor
deallocate select_cursor
0
Ryaner