Назад | Перейти на главную страницу

Microsoft SQL Server Management Studio 2008 удаление нескольких пользовательских таблиц

Есть ли простой способ удалить несколько таблиц в базе данных, не удаляя базу данных и не создавая ее заново? В данном случае нам нужно удалить более 100.

Я достаточно счастлив удалить все пользовательские таблицы и повторно импортировать необходимые данные, но не могут коснуться каких-либо параметров безопасности базы данных.

В проводнике объектов перейдите к интересующей вас базе данных. Разверните ее и щелкните папку «Таблицы». Нажмите F7, чтобы открыть подробности обозревателя объектов. Выберите таблицы, которые вы хотите удалить, и нажмите клавишу удаления.

Любая причина не делать это непосредственно в T-SQL (с DROP TABLE)? Тогда это всего лишь случай создания соответствующего сценария SQL (вполне возможно, с его автогенерированием, если у вас есть список таблиц, которые нужно удалить), и вы уезжаете.

Ответьте Tsql, как было предложено. Я не мог заставить таблицу перетаскивания работать в tsql, но это помогло.

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

Вы можете удалить несколько таблиц, перебирая их и выполнив следующее:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

Однако, если вы попытаетесь удалить таблицу, на которую ссылается внешний ключ, вы получите ошибку типа

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

Если вы просто хотите сделать это вручную, просто повторите оператор несколько раз, пока таблицы со ссылкой не будут отброшены (например, если Table2 имеет ссылку на Table1, то при первом запуске Table1 не может быть удален, а Table2 удален, а во второй run Table1 может быть удален, так как Table2 больше нет).