Truncate Database – alle Tabellen einer Datenbank löschen

Geschreiben von Marcus KimpenhausaufNov 25, 2008 in entwicklung |

Google Suchergebnisse

Folgende Begriffe wurden gesucht:

Bitte oben einen Suchbegriff anklicken um hier zum ersten Treffer zu gelangen (wenn vorhanden) oder zurück gehen zur Trefferliste aller Ergebnisse.

-- 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

Schlagwörter:, ,

2 Kommentare

  • Manuel sagt:
    Mozilla Firefox 3.0.4 Windows XP

    Hi Marcus, du könntest alternativ auch ein DETACH DATABASE machen, dann die zugehörigen MDF Files löschen und wieder ein CREATE DATABASE.

  • Mozilla Firefox 3.0.4 Mac OS X

    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 DATABASE oder per EXEC sp_MSForEachTable hauptsache man lagert es in ein Skript aus, welches man immer wieder ausführen kann ;-)

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Copyright © 2005-2010 marcus' tagebuch All rights reserved.
Desk Mess Mirrored v1.6 theme from BuyNowShop.com.