none
Fehler: „I/O Error: There is not enough space on the disk”, obwohl ausreichend Speicher zur Verfügung steht RRS feed

  • Frage

  • Hallo zusammen,

    bei einem unserer Kunden haben wir seit Kurzem ein seltsames Problem.

    Im Rahmen eines Import Prozesses, werden aus einer Tabelle Daten extrahiert. Es handelt sich um 10.859.192 Datensätze. Diese sollen in eine andere Tabelle in der gleichen Datenbank eingefügt werden.

    Dabei erscheint der Fehler: „I/O Error: There is not enough space on the disk”. Der Fehler erscheint schon beim Lesen der Datensätze. Es wird nicht ein Datensatz gelesen. Nach 43 sec. erscheint dann der Fehler.

     

    Auf der relevanten Partition des SQL – Servers sind ca. 170 GB freier Speicherplatz vorhanden. Die Einstellungen und Parameter im SQL – Server Management Studio wurden überprüft. Hier wurden testweise einige Parameter verändert. Unter anderem wurden verschiedene Werte für das „File Growth“ getestet, als auch verschiedene Einstellungen hinsichtlich der Maximalgröße für Datenbanken und Protokolle. Als Maximalgröße für die Datenbank wurde der Wert „Unlimited“ gewählt. Die Protokollgröße wurde auf 120000 MB begrenzt. Das Protokoll reizt diesen Wert jedoch nicht aus.

     

    Der Fehler tritt leider nur sporadisch auf. Aktuell besteht das Problem nicht. Seit ca. einer Woche laufen die Importe wieder.

     

    Welche Tatsachen können noch dazu führen, dass dieser Fehler ausgegeben wird? Zum Zeitpunkt des Fehlers finden sich weder in den SQL – Server Logs, noch in den Eventlogs des Windows Servers irgendwelche Einträge.

     

    Zu den Spezifikationen des Systems ist folgendes zu sagen:

    -          Windows Server 2012 Standard

       -     RAM 48 GB

    -          64 BIT OS

    -          MS SQL – Server Standard 2012 (64 BIT) (Version: 11.0.5343.0)

    -          Datenbank – Dateien und Logs liegen auf einer Partition. Freier Speicher hier: ca. 170 GB.

    -          Systempartition: freier Speicher: 19,2 GB

    -          Größe der relevanten Datenbankdatei: ca. 61 GB

    -          Es existiert eine Instanz, in welcher mehrere Datenbanken gehalten werden.

    Gruß aus Berlin.

    Mittwoch, 10. Februar 2016 11:32

Alle Antworten

  • Hi,

    liegt die Temp Datenbank evtl. auf einer eigenen Platte/Partition und falls ja, kann es sein, dass die überläuft?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 10. Februar 2016 11:38
    Moderator
  • Wie ist die Vergrößerung der Datenbank (mdf + ldf) eingestellt?

    Wird sie proaktiv vergrößert, oder muss der Import-Job darauf warten. Könnte es sein, dass hier ein Timeout erreicht wird?


    Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu

    Mittwoch, 10. Februar 2016 12:12
    Beantworter
  • Ist das wirklich die gesamte Fehlermeldung?

    Um welche Fehlernummer handelt es sich denn?

    Normalerweise sollte die Meldung lauten "Modify file encountered operating system error 112(there is not enough space on the disk) while attempting to expand the physical file. Could not adjust the space allocation for file 'xyz_LOG'. restore database is terminating abnormally."


    Andreas Wolter (Blog | Twitter)
    MCSM: Microsoft Certified Solutions Master Data Platform/SQL Server 2012
    MCM SQL Server 2008
    MVP Data Platform
    www.SarpedonQualityLab.com | www.SQL-Server-Master-Class.com

    Mittwoch, 10. Februar 2016 12:30
  • Hallo zusammen und vielen Dank für die Hinweise.

    @Stefan Falz: Die TempDB liegt auch auf Partition D, wo 170GB frei sind

    @Christoph Muthmann: Autogrowth ist aktiviert: in MB 2000 und unlimited.

    @Andreas Wolter: Gestartet wird der Prozess Java-basiert. Das heißt, der Prozess wird per JDBC-Treiber jtds-1.3.1 http://jtds.sourceforge.net/ ausgeführt. Das heißt. wir bekommen eine Java-Fehlermeldung, die leider nicht sehr viel mehr hergibt:

    Caused by: java.sql.SQLException: I/O Error: There is not enough space on the disk

             at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1093)

             at net.sourceforge.jtds.jdbc.TdsCore.submitSQL(TdsCore.java:938)

             at net.sourceforge.jtds.jdbc.JtdsConnection.setAutoCommit(JtdsConnection.java:2312)

             at com.xxx.lisa.connections.jdbc.ln.defaultimpl.DefaultLNConnection.setAutoCommit(Unknown Source)

             at com.xxx.lisa.connections.jdbc.impl.d.setAutoCommit(Unknown Source)

             at com.xxx.lisa.connections.jdbc.impl.TableSchemaSupportingJDBCConnection.setAutoCommit(Unknown Source)


    • Bearbeitet LNAG Mittwoch, 10. Februar 2016 14:01 Rechtschreibung
    Mittwoch, 10. Februar 2016 12:59
  • Hi,

    schau mal hier:

      http://community.jaspersoft.com/questions/800381/intermittently-error-javaioioexception-there-not-enough-space-disk

    Dort wird ein ähnliches Problem beschrieben, was dann allerdings auf das java.io.tmpdir Verzeichnis der JVM zurückzuführen sein soll.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 10. Februar 2016 13:05
    Moderator
  • Hi,

    klingt auf jeden Fall gut, allerdings ist das java.io.tempdir standardmäßig C:\Windows\Temp und dort ist ausreichend Platz. Der Prozess wird nachts vom Applikationsserver via Skript angestoßen, so dass die JVM des App-Servers genutzt wird. Dort schlägt er halt öfter mit der Fehlermeldung fehl. Man kann den Prozess allerdings auch von einem Client anstoßen, dann wird die JVM des Clients genutzt - selbe Phänomen: Genug Space, mal schlägt es fehl, mal funktioniert es..

    Mittwoch, 10. Februar 2016 14:01
  • ...

    @Andreas Wolter: Gestartet wird der Prozess Java-basiert. Das heißt, der Prozess wird per JDBC-Treiber jtds-1.3.1 http://jtds.sourceforge.net/ ausgeführt. Das heißt. wir bekommen eine Java-Fehlermeldung, die leider nicht sehr viel mehr hergibt:

    Caused by: java.sql.SQLException: I/O Error: There is not enough space on the disk

          ...

    Hallo

    das ist ja unschön, das das Errorhandling den fehler gekürtzt wiedergibt.

    Er sollte aber eigentlich dann auch im SQL Server ErrorLog stehen - wenn nicht, könnte man mal mitttracen (nur auf Fehler, SQL-seitig)


    Andreas Wolter (Blog | Twitter)
    MCSM: Microsoft Certified Solutions Master Data Platform/SQL Server 2012
    MCM SQL Server 2008
    MVP Data Platform
    www.SarpedonQualityLab.com | www.SQL-Server-Master-Class.com

    Mittwoch, 10. Februar 2016 14:09
  • Hi,

    das MSSQL Errorlog schreibt zu diesem Zeitpunkt rein gar nichts. Gibt es irgendwo eine Möglichkeit, einzustellen welche Einträge geloggt werden? z.B. nur Errors oder auch Infos, Executions o.Ä.?

    Mittwoch, 10. Februar 2016 15:09
  • Da es scheinbar keine SQL Server Fehlermeldung ist:

    select *
    from sys.messages
    where text like '%There is not enough space on the disk%'

    => kein Ergebnis

    wird sich dazu auch nicht im SQL Server ErrorLog finden. Ich tippe da eher auf einen Fehler vom Treiber: https://netbeans.org/bugzilla/show_bug.cgi?id=239142


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 10. Februar 2016 15:18