Microsoft SQL Server Management Studio 2008 Löschen mehrerer Benutzertabellen

12

Gibt es eine einfache Möglichkeit, mehrere Tabellen in der Datenbank zu löschen, ohne die Datenbank zu löschen und neu zu erstellen? In diesem Fall müssen wir über 100 entfernen.

Ich bin glücklich genug, alle Benutzertabellen zu entfernen und die erforderlichen Daten erneut zu importieren, kann jedoch keine der Datenbank-Sicherheitseinstellungen berühren.

Ryaner
quelle

Antworten:

26

Navigieren Sie im Objekt-Explorer zu der Datenbank, die Sie interessiert. Erweitern Sie sie und klicken Sie auf den Ordner Tabellen. Drücken Sie F7, um die Details des Objekt-Explorers aufzurufen. Wählen Sie die Tabellen aus, die Sie löschen möchten, und drücken Sie die Entf-Taste.

GilaMonster
quelle
Was ist mit Einschränkungen?
Simon
2

Gibt es einen Grund, dies nicht direkt in T-SQL (mit DROP TABLE) zu tun ? Dann muss nur noch das entsprechende SQL-Skript erstellt werden (möglicherweise wird es automatisch generiert, wenn Sie eine Liste der zu löschenden Tabellen haben), und Sie sind abwesend.

Jon Skeet
quelle
0

Tsql antworte wie vorgeschlagen. Ich konnte die Drop-Tabelle in tsql nicht zum Laufen bringen, aber das hat den Trick getan.

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
quelle
Dies setzt voraus, dass keine wesentlichen Einschränkungen bestehen.
K. Brian Kelley
Mit etwas mehr Aufwand können Sie Abhängigkeiten crawlen und die Tabellen in der gewünschten Reihenfolge löschen. Das Stackoverflow-Posting unter <a href= stackoverflow.com/questions/352176/…> bietet hierfür einige Lösungen.
ConcernedOfTunbridgeWells
0

Sie können mehrere Tabellen löschen, indem Sie sie durchlaufen und Folgendes ausführen:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

Wenn Sie jedoch versuchen, eine Tabelle zu löschen, auf die von einem Fremdschlüssel verwiesen wird, wird eine Fehlermeldung wie angezeigt

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

Wenn Sie dies nur manuell tun möchten, wiederholen Sie die Anweisung einfach einige Male, bis die Tabellen mit dem Verweis gelöscht wurden (z. B. wenn Tabelle2 einen Verweis auf Tabelle1 enthält, kann Tabelle1 beim ersten Ausführen nicht gelöscht werden, während Tabelle2 gelöscht wird, und beim zweiten run Table1 kann dann gelöscht werden, da Table2 nicht mehr vorhanden ist.

Ole Lynge
quelle