Microsoft SQL Server Management Studio 2008 excluindo várias tabelas de usuários

12

Existe uma maneira fácil de excluir várias tabelas no banco de dados sem eliminar o banco de dados e recriá-lo? Neste caso, temos mais de 100 para remover.

Estou feliz o suficiente para remover todas as tabelas de usuários e reimportar os dados necessários, mas não posso tocar em nenhuma das configurações de segurança do banco de dados.

    
por Ryaner 12.05.2009 / 10:14

4 respostas

24

No explorador de objetos, navegue até o banco de dados em que você está interessado. Expanda e clique na pasta Tabelas. Pressione F7 para exibir os Detalhes do Pesquisador de Objetos. Selecione as tabelas que você deseja excluir e pressione a tecla delete.

    
por 12.05.2009 / 15:19
2

Qualquer motivo para não fazê-lo diretamente no T-SQL (com DROP TABLE ) ? Então, é apenas um caso de criar o script SQL apropriado (possivelmente autogerá-lo se você tiver uma lista das tabelas que você precisa excluir) e você está ausente.

    
por 12.05.2009 / 10:35
0

Responda Tsql como sugerido. Eu não consegui pegar a tabela para trabalhar no tsql, mas isso funcionou.

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
    
por 12.05.2009 / 12:02
0

Você pode descartar várias tabelas, iterando-as e executando este:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

No entanto, se você tentar eliminar uma tabela que está sendo referenciada por uma chave estrangeira, receberá um erro como

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

Se você quiser apenas fazer manualmente, simplesmente repita a declaração algumas vezes até que as tabelas com a referência sejam descartadas (por exemplo, se a Tabela2 tiver uma referência à Tabela1, então, na primeira execução, a Tabela1 não poderá ser eliminada enquanto a Tabela2 for eliminada, e na segunda execução, a Table1 pode então ser descartada, já que a Table2 não é mais).

    
por 13.02.2013 / 19:02