Hallo, ich möchte alle Tabellen, Views, Trigger, etc. einer MSSQL-Datenbank löschen, praktisch also wieder eine jungfräuliche Datenbank haben. Jedoch möglichst ohne die Datenbank selber zu löschen.
Für das reine Entfernen der Tabellen habe ich schon ein Codeschnipsel gefunden:
Ich hätte auch angenommen dass das zweite Skript (zumindest teilweise) den gewünschten Erfolg bringt. Sieht nicht so aus als könne man damit Views löschen.
Schreib doch einfach eine eigene sp die das erledigt; zwei Cursor reichen SELECT Name FROM sys.sysobjects WHERE xtype IN ('V') liefert die Views SELECT Name FROM sys.sysobjects WHERE xtype IN ('U') liefert die Tabellen (wenn du Prozeduren und Funktionen hast, musst Du schauen was die für einen xType haben)
Ein Drop Table/ View sollte reichen um alle Objekte aus der Db zu löschen. Als Vorlage kannst Du dir ja auch die sys.sp_MSforeach_worker dort sieht man ganz gut wie Microsoft das für dein Beispiel macht.
CREATE PROC sp_drop_all_tables as
DECLARE tableNameCursor CURSOR FOR SELECT Name FROM sys.sysobjects WHERE xtype IN ('U') DECLARE @tableName nvarchar(517)
OPEN tableNameCursor
FETCH tableNameCursor into @tableName WHILE (@@fetch_status >= 0) BEGIN EXEC('DROP TABLE ' + @tableName) FETCH tableNameCursor into @tableName END
Entschuldige aber bin gerade nicht im klaren was du nun genau suchst, oder ich schnall es einfach gerade nicht :)= ein Codesnipped fürs entfernen hast du doch schon?!
Leider nein. Das Skript löscht zwar den Inhalt aller Tabellen, aber die Tabellen selbst bleiben bestehen. Und es betrifft ja auch noch die Trigger, Views und so weiter. mf
Was meinst du mit die Tabellen bleiben bestehen, DROP TABLE löscht alles aus deiner Tabelle, Trigger , Views etc...die Tabelle selbst mit eingeschlossen?