Skip to content

Löschen des Datenbankinhalts

Der folgende Skript löscht fast alle Daten aus der Datenbank und setzt diese wieder in den Auslieferungszustand zurück. Das löschen erfolgt dabei in einzelnen Schritten zu je 100 elementen. Falls der skript also auf grund eines timeouts abbricht, kann der vorgang einfach so oft neu gestartet werden, bis die Löschung vollständig ist.

DECLARE @string varchar(8000);
DECLARE @tableName nvarchar(500);
DECLARE cur CURSOR FOR
SELECT name AS tbname
FROM sysobjects
WHERE id IN (
SELECT parent_obj
FROM sysobjects
WHERE xtype = 'tr'
);
OPEN cur;
FETCH NEXT FROM cur INTO @tableName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @string = 'Alter table ' + @tableName + ' Disable trigger all';
EXEC (@string);
FETCH NEXT FROM cur INTO @tableName;
END;
CLOSE cur;
DEALLOCATE cur;
DELETE FROM Konto_Bankdaten_MRU;
UPDATE NummernPool_Bereich
SET
Nummer_Start = 1,
Nummer_Ende = 9223372036854775807,
Nummer_Aktuell = 0;
DELETE FROM NummernPool_Nummern;
DELETE FROM Parameter
WHERE NOT Parameter = 'DBTYPE'
AND NOT Parameter = 'SchemaVersion'
AND NOT Parameter = 'ConnectionDLL_AssemblyName'
AND NOT Parameter = 'ConnectionDLLVersion'
AND NOT Parameter = 'ConnectionDLLMinVersion';
DELETE FROM Parameter_NonReplica;
DELETE FROM Server_Aktionen;
DECLARE @Count bigint;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM Statistic_LagerVerlauf;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM Statistic_LagerVerlauf_Gesamt;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Adressen;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Adressen_Skonto;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Ansprechpartner;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_Arbeitsplan;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_Arbeitsplan_Beistelliste;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_ArtikelOptionen;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_Eigenschaften;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_Lagerstand;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_Lieferanten;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_Mindestbestand;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_Paket;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_Queue;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_Vorgangsliste;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_Warenbewegung;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikel_Zubehör;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_ArtikelOptionen;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Artikelzuordnung;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Auftrag;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Benutzer;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_ChangeTracking;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Einstellungen;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Fahrzeugdaten;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Fahrzeugdaten_Artikel;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Feldbezeichnungen;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Inventur;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Inventur_Artikel;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Kassen;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Kassenbuch;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Konto_Aufträge;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Konto_Kontostände;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Konto_Lastschriften;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Kontoauszüge;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_KontoOptionen;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Kundenrabatt;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Lager;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Lager_Artikelzuordnung;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Lagerbestand;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Lieferadressen;
SET @Count = @@ROWCOUNT;
END;
DELETE FROM tbl_Profile
WHERE NOT ID = 0;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Protokoll;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_QuickSteps;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Rabatt;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_ServerAktionen;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Statistik_Artikel;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Textbausteine;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Warengruppen;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Zahlungsziel;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Zweigstellen;
SET @Count = @@ROWCOUNT;
END;
SET @Count = 1;
WHILE @Count > 0
BEGIN
DELETE TOP (100) FROM tbl_Nachrichten;
SET @Count = @@ROWCOUNT;
END;
DECLARE cur CURSOR FOR
SELECT name AS tbname
FROM sysobjects
WHERE id IN (
SELECT parent_obj
FROM sysobjects
WHERE xtype = 'tr'
);
OPEN cur;
FETCH NEXT FROM cur INTO @tableName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @string = 'Alter table ' + @tableName + ' Enable trigger all';
EXEC (@string);
FETCH NEXT FROM cur INTO @tableName;
END;
CLOSE cur;
DEALLOCATE cur;