Announcement

Collapse
No announcement yet.

problem mit sql datenbank, Tabelle löschen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • problem mit sql datenbank, Tabelle löschen

    Hallo,
    ich suche seid mehreren Tagen eine lösung für mein problem.
    Und zwar hab ich hier einen PC der pro produziertes teil einen eintrag in eine sql datenbank macht.
    mitllerweile ist aber die datenbank zu gross (über2gb) und nun sollen alte daten gelöscht werden.
    Ich hab aber davon überhaupt keine ahnung, weil ich vorher mit sql garnix zu tun hatte.
    Soweit ich weiss wird die datenbank mit einer .bat datei erstellt?
    in der datei wurde folgendes reingeschrieben:
    REM Datum ermitteln
    For /f "tokens=1-4 delims=. " %%a in ('date /t') do (set date=%%c%%b%%a)
    For /f "tokens=1-4 delims=. " %%a in ('date /t') do (set datum=%%c-%%b-%%a)
    For /f "tokens=1-4 delims=. " %%a in ('date /t') do (set jahr=%%c)
    For /f "tokens=1-4 delims=. " %%a in ('date /t') do (set monat=%%b)

    REM Datum auf den 1. des Jahrs setzen!
    set datum=%jahr%-01-01


    REM Überprüfen, ob Archivdatei bereits vorhanden ist
    if exist %D:\Datenbank\Archiv\ARCHIV_%datum%.bak goto ENDE

    :BACKUP_DATA
    REM Ausführen der Backuproutine
    osql -Umur -Pmur -Q "BACKUP DATABASE [NGE] TO DISK='D:\Datenbank\Archiv\ARCHIV_%datum%.bak'"

    REM Überprüfen, ob Archivdatei vorhanden ist
    if exist %D:\Datenbank\Archiv\ARCHIV_%datum%.bak goto DEL_OLD_DATA
    echo Archiv-Datei wurde nicht erstellt! Abbruch! >> D:\Datenbank\Archiv\Log\Archivierung_%date%.txt
    goto ENDE

    : DEL_OLD_DATA
    echo Die Archiv-Datei wurde erstellt! Alte Daten löschen... >> D:\Datenbank\Archiv\Log\Archivierung_%date%.txt

    REM Alte Daten aus der Datenbank löschen
    osql -Umur -Pmur -Q "delete GES WHERE ZEIT<'%datum% 00:00:00'" >> D:\Datenbank\Archiv\Log\Archivierung_%date%.txt


    :ENDE
    das scheint aber nicht zu funktionieren, weil die datei nicht kleiner wird wenn ich datei ausführe.
    Wäre echt super wenn mir jemand dabei helfen könnte.

    MfG Julian

  • #2
    Hallo Julian,

    das scheint aber nicht zu funktionieren, weil die datei nicht kleiner wird
    Das wird vermutlich schon funktionieren, aber nur durch Löschen wird eine Datenbank nie kleiner. Der Speicherplatz wird nur als frei markiert und bei Bedarf wieder neu verwendet.

    osql
    Du hast also den MS SQL Server am Laufen, Glückwunsch oder Beileid; wie man es sieht

    Es gibt einen Befehl, um eine Datenbank verkleinern zu lassen, dazu müsstes Du aus dem Batch folgendes aufrufen lassen:

    osql -Umur -Pmur -Q "DBCC SHRINKDATABASE([NGE]);"

    Aber ich möchte nicht wirklich dazu raten, den es verbessert allein schon mal nicht die Performance. Und so unbeaufsichtigt ist das auch so eine Sache, falls was schief gehen sollte (was im Normalfall nicht passiert.
    Vor allem solltest Du es nur durchführen, wenn keiner auf der Datenbank arbeitet, da es das System doch reichlich belasten wird.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Hallo,
      vielen dank schonmal für die informationen, das hat mich schonmal etwas weiter gebracht.

      Den befehl werd ich dann gleich testen.
      Außer mir und dem pc macht keiner was mit der Datenbank, sollte also kein problem darstellen.

      Wäre es theoretisch möglich alle Daten, die meinetwegen über 2jahre alt sind ausnahmslos zu löschen und somit den speicherplatz auf eine gewisse größe zu begrenzen?

      MfG Julian

      Comment


      • #4
        Hallo Julian,
        die meinetwegen über 2jahre alt sind ausnahmslos zu löschen
        wenn ich es richtig sehe, sollte dieser Teil:

        REM Alte Daten aus der Datenbank löschen
        osql -Umur -Pmur -Q "delete GES WHERE ZEIT<'%datum% 00:00:00'"

        das schon erledigen; alles aus der Tabelle GES zu löschen, was echt älter ist als heute.
        Wenn Du die Möglichkeit hast, prüfe mal, ob es ältere Datensätze gibt; wenn ja funktioniert das löschen nicht (mit Datumswerten ist das wegen Format immer so eine Sache).
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment

        Working...
        X