Truncate Database – alle Tabellen einer Datenbank löschen
Google Suchergebnisse
-- First disable referential integrity EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' GO -- Drop all tables EXEC sp_MSforeachtable @command1 = "DROP TABLE ?" GO -- Now enable referential integrity again EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL' GO
Mit Hilfe dieser paar Zeilen lassen sich in einer Microsoft SQL Server Datenbank alle Tabellen löschen, unabhängig von der Reihenfolge und der Constraints mit welchen sie verknüpft sind. Dazu werden in der ersten Zeile alle Contsraints disabled – danach alle Tabellen gelöscht. Die darauf folgende Anweisung, die Constraints wieder zu enablen, kann man sich eigentlich schenken, da keine Tabellen mehr in der Datenbank enthalten sein sollten. Ich habe es nur der Vollständigkeit halber miterwähnt, da man dieses Skript auch für andere Aufgaben missbrauchen kann: z.B.: alle Tabellen der Datenbank leeren, ebenfalls unabhängig der foreign-key constraints.
Schlüssel zum Erfolg ist die undokumentierte Stored Procedures sp_MSForEachTable. Eine kurze Erläuterung findet sich im databasejournal.com
Hi Marcus, du könntest alternativ auch ein DETACH DATABASE machen, dann die zugehörigen MDF Files löschen und wieder ein CREATE DATABASE.
Müsste ich dann nicht auch wieder ein Schema und die entsprechenden Berechtigungen anlegen?
Hm…im Grunde kann man wohl beliebig viele Wege “skripten”, um zu Entwicklungszwecken mal eine Datenbank zu leeren, sei es per
DETACH DATABASEoder perEXEC sp_MSForEachTablehauptsache man lagert es in ein Skript aus, welches man immer wieder ausführen kann