Microsoft SQL Server Management Studio 2008 видалення декількох таблиць користувачів


12

Чи є простий спосіб видалити кілька таблиць у базі даних, не скидаючи базу даних і не відтворивши її? У цьому випадку ми маємо понад 100 для видалення.

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

Відповіді:


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

Це передбачає, що ключових обмежень для переднього плану не існує.
К. Брайан Келлі

Ви можете сканувати залежності і скидати таблиці в порядку, доклавши трохи більше зусиль. Публікація stackoverflow за адресою <a href= stackoverflow.com/questions/352176/…> має деякі рішення для цього.
ЗанепокоєнийOfTunbridgeWells

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.

Якщо ви просто хочете зробити це вручну, то просто повторіть заяву кілька разів, поки таблиці з посиланням не будуть скинуті (наприклад, якщо в таблиці2 є посилання на таблицю1, то при першому запуску таблиця1 не може бути скинута, коли таблиця2 відкинута, а в другій запустити таблицю1 можна потім відмовитись, оскільки Table2 більше не є).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.