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

12

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

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

Ryaner
источник

Ответы:

26

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

Ядозуб монстр
источник
как насчет ограничений?
Саймон
2

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

Джон Скит
источник
0

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
Ryaner
источник
Это предполагает, что никаких ключевых ограничений не существует.
К. Брайан Келли
Вы можете сканировать зависимости и отбрасывать таблицы по порядку, приложив немного больше усилий. Публикация в stackoverflow на <a href= stackoverflow.com/questions/352176/…> имеет несколько решений для этого.
ConcernedOfTunbridgeWells
0

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

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 больше нет).

Оле Линдж
источник