it-swarm-pt.tech

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

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

Tenho o prazer de remover todas as tabelas do usuário e reimportar os dados necessários, mas não consigo alterar as configurações de segurança do banco de dados.

12
Ryaner

No Object Explorer, navegue até o banco de dados do seu interesse. Expanda-o e clique na pasta Tables. Pressione F7 para abrir os Detalhes do Object Explorer. Selecione as tabelas que deseja excluir e pressione a tecla de exclusão.

26
GilaMonster

Qualquer razão para não fazer isso diretamente no T-SQL (com DROP TABLE )? Então, é apenas o caso de criar o script SQL apropriado (muito possivelmente gerá-lo automaticamente se você tiver uma lista das tabelas que precisa excluir) e você está fora.

2
Jon Skeet

Você pode eliminar várias tabelas iterando-as e executando o seguinte:

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 fazer isso manualmente, basta repetir a instrução algumas vezes até que as tabelas com a referência sejam eliminadas (por exemplo, se a Tabela2 tiver uma referência à Tabela1, então, na primeira execução, a Tabela1 não pode ser eliminada enquanto a Tabela2 é eliminada, e na segunda a execução da Tabela1 pode então ser eliminada, pois a Tabela2 não existe mais).

0
Ole Lynge

Resposta de Tsql conforme sugerido. Não consegui fazer a drop table funcionar em tsql, mas 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 '[email protected]

    fetch next from select_cursor
    into @TABLE
end

close select_cursor
deallocate select_cursor
0
Ryaner