none
Prüfung ob Speichergrenze erreicht RRS feed

  • Frage

  • Hallo,

    ich möchte in meiner Anwendung überwachen, wann die maximale Speichermenge einer Datenbank der Express Edition (10 GB) erreicht wird.

    Ich habe heraus gefunden, dass ich Informationen hierzu abrufen kann über die Prozedur 'sp_spaceused'.
    Es werden folgende Informationen ausgegeben:

    database_size, unallocated space, reserved, data, unused

    Ich möchte die aktuelle Größe auf einen Grenzwert abprüfen um rechtzeitig den Admin meiner Anwendung zu benachrichtigen. Stehen z.B. nur noch 500 MB der 10 GB zur Verfügung (Grenzwert), versende ich eine eMail.

    Welcher der oben genannten Werte soll ich für diesen Vergleich nutzen?

    Danke und viele Grüße,
    Christian


    Dienstag, 11. August 2015 12:57

Antworten

  • 100% festlegen möchte ich mich da nicht, es kann gut sein, das man da auch noch "unused" hinzu rechnen muss; gerade wenn man viele Heap Tabellen hat, können da noch größere Werte hinzukommen.

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 12. August 2015 06:36

Alle Antworten

  • Hallo Christian,

    wenn ich mich recht entsinne, wird für das Größenlimit bei der Express Edition nur die Größe der Datendateien berücksichtigt, nicht aber die Log Größe und auch nicht Filestream. "Reserved" wäre also hier am ehesten die gesuchte Größe.

    Alternativ kannst Du es auch über die System Views abfragen:

    -- Netto Datengröße 
    SELECT size * 8.0 / 1024 AS MB
    FROM sys.database_files
    WHERE type = 0;
    
    -- Log File Größe
    SELECT size * 8.0 / 1024 AS MB
    FROM sys.database_files
    WHERE type = 1;
    
    exec sp_spaceused

    Siehe sys.database_files (Transact-SQL)


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Dienstag, 11. August 2015 13:24
  • Hi Olaf,

    vielen Dank für Deine Hilfe!

    Verstehe ich es richtig, dass die Datenbank in die 'Krätsche' geht, wenn 'zuviel' Speicher reserviert wurde, aber tatsächlich nur z.B. 60% von dem reservierten Speicher genutzt wird?

    Viele Grüße,
    Christian

    Dienstag, 11. August 2015 13:45
  • Hallo Christian,

    sozusagen, die Express Edition reklamiert die Größen-Überschreitung dann, wenn sich die Datendatei sich über die 10 GB vergrößern will, weil sie z.B. voll ist und neue Daten eingefügt werden sollen.

    Man kann bei der Anlage einer Datenbank auch eine Initialgröße angeben, wenn die das Limit überschreitet, gibt es auch einen Fehler, obwohl die Datenbank-Datei selbst leer ist; Beispiel mit SQL Server 2008 Express, wo das Limit noch bei 4 GB lag:


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Dienstag, 11. August 2015 14:14
  • Hallo Christian,

    Die Datenbank geht dann erstmal nicht in die "Krätsche" aber sie kann dann nicht mehr weiter wachsen.

    Wenn also die Datenbankdatei ihr Limit von 10 GB erreicht hat wird die Anwendung diese auch nutzen können aber halt nicht mehr als 10 GB. Sie kann danach nicht mehr weiter wachsen und somit kannst du auch keine neuen Daten mehr speichern. Wenn von den 10 GB noch 40 % frei sind dann hast du halt noch genau 4 GB Platz in der Datenbank.

    Gruß


    Benjamin Hoch
    MCSE: Data Platform,
    MCSA: Windows Server 2012,

    Dienstag, 11. August 2015 14:17
  • Hallo Benjamin,

    vielen Dank für Deine Hilfe!

    Wie kann ich dann den tatsächlich genutzten Speicher, die belegten 60% (vgl. oben) ermitteln?

    Viele Grüße,
    Christian

    Mittwoch, 12. August 2015 05:14
  • Hallo Christian,

    das sind "data" + "index_size" aus dem Ergebnis von sp_spaceused


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 12. August 2015 05:55
  • Guten Morgen Olaf,

    ist dann folgende Behauptung korrekt?

    Der SQL Express nimmt keine weitere Daten mehr auf, wenn die Summe aus 'data' und 'index_size' das Limit von 10 GB erreicht hat.

    Viele Grüße und Danke,
    Christian

    Mittwoch, 12. August 2015 05:58
  • 100% festlegen möchte ich mich da nicht, es kann gut sein, das man da auch noch "unused" hinzu rechnen muss; gerade wenn man viele Heap Tabellen hat, können da noch größere Werte hinzukommen.

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 12. August 2015 06:36
  • Hi Olaf,

    herzlichen Dank für Deine Hilfe!

    Viele Grüße,
    Christian

    Mittwoch, 12. August 2015 11:51