![]() |
Datenbank: mdb • Zugriff über: ado
mehrere Tabellen gleichzietig löschen
Hiho Leute,
um mehrere Tabellen zu löschen, wie geht man da vor? Muss jedesmal für eine Tabelle ein SQLString gesendet und mit ExecSQL abgeschlossen werden? Oder geht das kompakter? |
Re: mehrere Tabellen gleichzietig löschen
Wie viel wi8llst du denn löschen? Schreib die Tablenamen in eine Array und gehe das in einer Schleife durch.
|
Re: mehrere Tabellen gleichzietig löschen
Na nur 6 Stück,
ist ja auch ne prinzipielle Frage, wie das geht. |
Re: mehrere Tabellen gleichzietig löschen
Hallo,
entweder es geht so
SQL-Code:
Drop Table Table1; Drop Table Table2;
die einzelnen Befehle also mit Semikolon getrennt, oder wie du es bereits gesagt hattest. Das ist einfach DB-abhängig. Heiko |
Re: mehrere Tabellen gleichzietig löschen
Hallöchen,
nach dem löschen bleibt die DB Größe unverandert. Also müssen sicherlich noch Leichen im Keller gelöscht werden. Wie wird das mit ADO KOmpo gehändelt, die Syntax dazu? Grüße |
Re: mehrere Tabellen gleichzietig löschen
Das hat nichts mit Leichen zu tun sondern mit einer Fragmentierung. Wenn jedesmal beim löschen eines Datensatzes oder dergleichen alle folgenden Datensätze in der Dateistruktur verschoben würden, wäre eine Datenbank recht langsam. Daher bleibt die Datei in aller Regel bei ihrer Größe, sollte aber auch nicht anwachsen wenn neue Datensätze dazu kommen sofern diese in die Lücken der gelöschten Daten passen.
Ich glaube mit "optimize" kann man unter anderem das Defragmentieren erreichen. |
Re: mehrere Tabellen gleichzietig löschen
Dankeschön für den Hinweis
Im Access selbst gibt es den Punkt Datenbank komprimieren und reparieren Dies führt die gewünschte Aktion aus. Nur weiß ich nicht welches SQL Statemant dafür notwendig ist. |
Re: mehrere Tabellen gleichzietig löschen
Man sollte sich das auch sehr gut überlegen. In den meisten Fällen ist dies kontraproduktiv, da für die Vergrößerunge einer Datei mehr Aufwand nötig ist, als beim "Lücken"füllen
|
Re: mehrere Tabellen gleichzietig löschen
Danke mkinzler
das verstehe ich nun nicht ganz. Beispiel meine mdb Größe:17,6 MB nach Drop Table und anschliessendem neuerstellen immer noch 17,6 MB Mittels Access Oberfläche reparieren und komprimieren, danach 796kb was wurde da vergrößert oder dazugenommen? wären die komprimierten theoretisch wiederherstellbar? Grüße |
Re: mehrere Tabellen gleichzietig löschen
Hallo,
Zitat:
Such einfach mal in Google "compact access database through ado". Das liefert u.a. ![]() Auf jeden Fall die englische Seite nehmen ;) Aber wie mein Vorschreiber schon gesagt hat, macht es keinen Sinn, eine DB nach dem Löschen von "ein paar Daten" zu komprimieren. Eine DB ist auf Wachstum ausgelegt. Durch Löschen entstandene Lücken werden durch die DB größtenteils selber wieder mit neuen Daten aufgefüllt. Und mache das ganze nicht an dem Wort größtenteils fest. Dazu ist übrigens auch exclusiver Zugriff notwendig, was in der Regel nicht der Fall ist. Ausserdem sollte man vorher eine Sicherheitskopie anlegen. Zum Komprimieren heisst: Alle Daten werden auf 4 kB Seiten verteilt. Eine Seite bekommt immer nur Daten einer Tabelle. Werden z.B. 6 kB Daten eingetragen, ergibt das u.U. 2 Seiten Belegung, also 8 kB (2*4 kB). Wird jetzt eines der Daten gelöscht und z.B. 1 kB neu hinzugrfügt, werden immer noch 2 Seiten benutzt. es würde aber 1 Seite reichen (3kB + 1kB). Durch das Komprimieren werden die Daten in eine neue MDB in der optimalen Reihenfolge (anderes Thema) geschrieben, es wird nur noch eine Seite benötigt (4 kB Daten, 4 kB Seite). die MDB ist 4 kB kleiner. Ausserdem werden die Indizes neu erzeugt (die liegen auch in 4 kB Seiten), was den Speicherverbrauch auch reduzieren kann. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:05 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