Microsoft SQL Server Management Studio 2008 usuwający wiele tabel użytkowników

12

Czy istnieje prosty sposób na usunięcie wielu tabel w bazie danych bez upuszczania bazy danych i odtwarzania jej? W tym przypadku mamy ponad 100 do usunięcia.

Jestem szczęśliwy, że mogę usunąć wszystkie tabele użytkowników i ponownie zaimportować potrzebne dane, ale nie mogę dotknąć żadnego z ustawień zabezpieczeń bazy danych.

Ryaner
źródło

Odpowiedzi:

26

W eksploratorze obiektów przejdź do bazy danych, która Cię interesuje. Rozwiń ją i kliknij folder Tabele. Naciśnij klawisz F7, aby wyświetlić szczegóły Eksploratora obiektów. Wybierz tabele, które chcesz usunąć, i naciśnij klawisz usuwania.

GilaMonster
źródło
co z ograniczeniami?
Simon
2

Czy jest jakiś powód, aby nie robić tego bezpośrednio w T-SQL (z DROP TABLE)? Następnie jest to tylko przypadek utworzenia odpowiedniego skryptu SQL (całkiem możliwe, że jest on automatycznie generowany, jeśli masz listę tabel, które musisz usunąć) i nie ma cię.

Jon Skeet
źródło
0

Odpowiedź Tsql zgodnie z sugestią. Nie mogłem zmusić tabeli zrzutu do pracy w tsql, ale to załatwiło sprawę.

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
źródło
Zakłada się, że nie istnieją żadne kluczowe ograniczenia na przód.
K. Brian Kelley
Z nieco większym wysiłkiem możesz indeksować zależności i upuszczać tabele w kolejności. Publikowanie stackoverflow na stronie <a href= stackoverflow.com/questions/352176/…> zawiera kilka rozwiązań pozwalających to zrobić.
ConcernedOfTunbridgeWells
0

Możesz upuścić wiele tabel, iterując je i wykonując to:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

Jeśli jednak spróbujesz usunąć tabelę, do której odwołuje się klucz obcy, pojawi się błąd podobny do tego

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

Jeśli chcesz to zrobić ręcznie, po prostu powtórz instrukcję kilka razy, aż tabele z odwołaniem zostaną usunięte (np. Jeśli Tabela 2 zawiera odwołanie do Tabeli 1, to przy pierwszym uruchomieniu nie można usunąć Tabeli 1, podczas gdy Tabela 2 jest usuwana, a następnie uruchom Tabela 1 może zostać usunięta, ponieważ nie ma już tabeli 2).

Ole Lynge
źródło