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 descartá-lo e recriá-lo? Nesse 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 consigo tocar em nenhuma das configurações de segurança do banco de dados.

Ryaner
fonte

Respostas:

26

No explorador de objetos, navegue até o banco de dados de seu interesse. Expanda-o 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.

Monstro de Gila
fonte
e quanto a restrições?
Simon
2

Alguma razão para não fazê-lo diretamente no T-SQL (com DROP TABLE)? Depois, é apenas um caso de criação do script SQL apropriado (possivelmente gerando automaticamente se você tiver uma lista das tabelas que precisa excluir) e você estará ausente.

Jon Skeet
fonte
0

Tsql responde como sugerido. Não consegui que a tabela suspensa funcionasse 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
Ryaner
fonte
Isso pressupõe que não haja restrições de chave na testa.
407 Brian K. Kelley
Você pode rastrear dependências e soltar as tabelas em ordem com um pouco mais de esforço. A postagem do stackoverflow em <a href= stackoverflow.com/questions/352176/…> tem algumas soluções para fazer isso.
ConcernedOfTunbridgeWells
0

Você pode eliminar várias tabelas iterando através delas e executando o seguinte:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

No entanto, se você tentar descartar uma tabela que está sendo referenciada por uma chave estrangeira, você 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 fazê-lo manualmente, basta repetir a instruçã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 descartada enquanto a Tabela2 for descartada e, na segunda executar a Tabela1 pode ser descartada, pois a Tabela2 não existe mais).

Ole Lynge
fonte