Microsoft SQL Server Management Studio 2008 eliminando varias tablas de usuario

12

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

Estoy feliz de eliminar todas las tablas de usuarios y volver a importar los datos necesarios, pero no puedo tocar ninguna de las configuraciones de seguridad de la base de datos.

Ryaner
fuente

Respuestas:

26

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

Monstruo Gila
fuente
¿Qué pasa con las limitaciones?
Simon
2

¿Alguna razón para no hacerlo directamente en T-SQL (con DROP TABLE)? Entonces es solo un caso de crear el script SQL apropiado (posiblemente autogenerado si tienes una lista de las tablas que necesitas eliminar) y estás ausente.

Jon Skeet
fuente
0

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 '+@TABLE

    fetch next from select_cursor
    into @TABLE
end

close select_cursor
deallocate select_cursor
Ryaner
fuente
Esto supone que no hay restricciones clave de foreigh en su lugar.
K. Brian Kelley
Puede rastrear dependencias y soltar las tablas en orden con un poco más de esfuerzo. La publicación de stackoverflow en <a href= stackoverflow.com/questions/352176/…> tiene algunas soluciones para hacerlo.
ConcernedOfTunbridgeWells
0

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

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

Sin embargo, si intenta descartar 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 el enunciado varias veces hasta que se eliminen las tablas con la referencia (por ejemplo, si la Tabla2 tiene una referencia a la Tabla1, entonces, en la primera ejecución, la Tabla1 no se puede eliminar mientras se elimina la Tabla2, y en la segunda ejecutar Table1 se puede descartar ya que Table2 ya no existe).

Ole Lynge
fuente