1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

SQL 2008 Datensätze älter als . . löschen.

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von klagges, 27 Oktober 2017.

  1. klagges

    klagges Neuer Benutzer

    Hallo zusammen ich habe eine SQL db (MS sql 2008 R2) welche von einer Siemens SPS mittels Wincc gefüttert wird. Diese Hat nach ca. 4 Monaten 25GB. deshalb möchte ich in regelmässigen abständen die ältesten einträgt löschen.

    VarName - Varchar
    TimeString - Char
    VarFalue- float
    Time_ms - float

    Im Feld TimeString steht das Datum im Format TT.MM.JJJJ SS:MM:SS.

    Ich hatte versucht den String zu vergleichen aber das klappt nicht wirklich:

    SELECT * FROM P22010_Backup where TimeString >= CONVERT(CHAR(11), GETDATE ( ) - 50, 104) + CONVERT(CHAR(15), GETDATE ( ) - 50, 108);

    Weil es ja ein string und kein Datum ist.

    PS: im Time_ms ist wohl ein mir unbekannter Timestamp drinnen 43035738694.7454 entspricht dem 27.10.2017 17:43:43

    Kann mir evtl. wer nen Tipp geben wie man das lösen könnte ?

    Mfg

    Klagges
     
  2. pathomorph

    pathomorph Benutzer

    Hallo Klagges

    Konvertiere mal den TimeString in datetime statt andersrum:

    Code:
    SELECT
        *
    FROM
        P22010_Backup
    WHERE
        CONVERT(datetime,TimeString) >= GETDATE() - 50
    Gruß
     
  3. klagges

    klagges Neuer Benutzer

    Ahh danke das war der Denkfehler von mir :)

    Code:
    SELECT
        *
    FROM
        P22010_Backup
    WHERE
        CONVERT(datetime,TimeString, 104) >= GETDATE() - 50
    Klappt Super :)
     
  4. Gunther

    Gunther Neuer Benutzer

    Hallo Klagges,

    wenn ich mich recht entsinne, kann man doch bei WinCC die maximal größe der DB oder die maximale Anzahl an Datensätze der DB angeben und diese somit zu einem "rollenden" archiv machen. WinCC würde sich dann um dein Problem kümmern.

    Gruß
     
  5. klagges

    klagges Neuer Benutzer

    @Gunther Ja man kann ein Umlaufarchiv erstellen und er löscht dann alles was älter ist. Allerdings ist die maximal einstellbare Zahl an Datensätzen bei 500.000 oder so. Pro Datenbank. Von Wincc schreibe ich ca. alle 3 sec. einen Temperaturwert. Von einem Bad und das enthält aber 3 Fühler. Also alle 3 sec 3 Datensätze somit Komme ich mit dem Standart Umlaufarchiv nicht sehr weit deswegen schiebe ich z.B. alle 1000. Datensätze in eine "Backup" Datenbank. (wird angehängt) somit habe ich eine endlos aufnahme.
    Und um diese zu begrenzen habe ich den Code gebraucht.
    Somit kann ich die Daten Auf 1 Jahr begrenzen die db Beträgt dann aber auch schon ca 90GB.
     
Die Seite wird geladen...

Diese Seite empfehlen