![]() |
SQL-Server-Datenbank leeren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, Community,
ich habe ein Problem: und zwar arbeite ich gerade an einem Apothekenprogramm, welches auch eine Funktion zum Zurücksetzen der Datenbank auf den Auslieferungszustand haben soll. Die Datenbank ist im SQL Server verkapselt. Damit der Nutzer sehen kann, wie weit das Zurücksetzen ist, soll eine Gauge den Stand anzeigen. Weiß jemand, wie ich die ganze Geschichte hinbekommen kann? Bestens, Pfl |
AW: SQL-Server-Datenbank leeren
Dauert das denn so lange?
|
AW: SQL-Server-Datenbank leeren
Leider ja. Die Datenbank ist sehr groß...
|
AW: SQL-Server-Datenbank leeren
Zitat:
@Pfl: Du solltest den Text ändern. Ein Backup einspielen stellt den Zustand vor dem Löschen wieder her. |
AW: SQL-Server-Datenbank leeren
Zurücksetzen auf den Auslieferungsstand, wäre da nicht das Wiederherstellen eines initialen Backups die Lösung der Wahl?
|
AW: SQL-Server-Datenbank leeren
Es gibt zwei Wege eine Tabelle per SQL zu löschen
SQL-Code:
-- Standard Löschen
DELETE FROM Tabellenname
SQL-Code:
TRUNCATE TABLE ist blitzschnell (< 100ms) aber es gibt Fälle in denen man auf DELETE FROM zurückgreifen muss.
-- Schnell-Löschung
TRUNCATE TABLE Tabellenname Das Cleanen der Datenbank sieht dann ungefähr so aus:
Delphi-Quellcode:
procedure CleanDatabase(con:TAdoConnection);
begin // Achtung: Reihenfolge ist wichtig // zuerst die abhängigen Tabellen löschen, dann die Mastertabellen con.Execute('TRUNCATE TABLE Bestellungen'); con.Execute('TRUNCATE TABLE ImportDaten'); con.Execute('TRUNCATE TABLE Preislisten'); ... con.Execute('DELETE FROM Mandanten WHERE IdMandant <> ''default'''); // alle Mandanten ausser einem löschen ... end; |
AW: SQL-Server-Datenbank leeren
Nein, leider nicht. Das Backup ist automatisiert; durch eine Restorefunktion lassen sich die Datenbestände wiederherstellen.
|
AW: SQL-Server-Datenbank leeren
Ein Wort zu TRUNCATE: Dieser Befehl funktioniert nur, wenn keine Fremdschlüssel definiert sind, es ist unerheblich, ob es durch das Löschen zu FK-Verletzungen kommen könnte.
Ich würde also in einem Skript alle FK entfernen, die DB per TRUNCATE leeren und die FK dann wieder aktivieren. Allerdings ist ein RESTORE einer initial-DB wirklich sauberer. |
AW: SQL-Server-Datenbank leeren
Ich halte es auch für am Besten, einen Snapshot der leeren DB mitzuliefern und dann ein Restore zu machen. Evtl. gibt es ja auch einige Basiseinträge, Stammdaten etc. ohne die das System nicht funktioniert. Ansonsten musst Du für jede Tabelle alle Constraints und Trigger disablen, Dein Delete durchführen und danach die Trigger und Constraints wieder aktivieren bzw. erstellen. Ein Beispiel findest Du
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz