it-swarm.com.de

Auf der Systemfestplatte ist nicht mehr genügend Speicherplatz vorhanden, wenn umfangreiche SQL-Abfragen unter SQL Server 2012 ausgeführt werden

Ich bin ziemlich neu in SQL Server 2012, ich wäre dankbar, wenn jemand helfen könnte. Ich habe eine Kopie einer riesigen Datenbank in SQL Server 2012 wiederhergestellt und versucht, einige einfache Abfragen dagegen auszuführen.

Ich versuche, eine SELECT-Abfrage für eine Datenbanktabelle von 136898115 Linien. Diese SELECT Abfrage enthält nur eine einfache WHERE Klausel. Jedes Mal, wenn ich diese Abfrage ausführe, schlägt sie fehl, weil die Systemfestplatte (die Partition, auf der Windows installiert ist - C:\) nicht genügend Speicherplatz (diese Partition hat nur 6 GB freien Speicherplatz), und ich verstehe nicht warum. Ich habe meine Tempdb so definiert, dass sie sich auf einem anderen Laufwerk befindet, das mehr als 14 Terabyte freien Speicherplatz hat. Natürlich befindet sich meine Datenbank auch auf einem anderen Laufwerk.

Wodurch geht meiner Systempartition der Speicherplatz aus? Ist es die Auslagerungsdatei?

14
royv

Der Cache für SSMS-Abfrageergebnisse wird standardmäßig auf dem Laufwerk C: gespeichert. Gehen Sie zu Tool\Options. Siehe Anhang. Ändern Sie dies auf ein anderes Volume mit mehr Speicherplatz und es sollte Ihnen gut gehen.

enter image description here

12
Eric Higgins

Okay, ich habe es herausgefunden: Eric und ich hatten beide recht!

  • Der Pfad im Dialogfeld ist wie gesagt nur ein Standardpfad zum Speichern von Abfrageergebnissen.
  • Abfrageergebnisse sind Auf der Festplatte zwischengespeichert (ich habe mich geirrt), aber im lokalen Profil temp Ordner (C:\Users\<UserName>\AppData\Local\Temp in meinem Fall hier). Ich habe nachgesehen, und es scheint keinen offensichtlichen Weg zu geben, dieses Caching auszuschalten.

Die Imbissbuden sind also:

  • Vermeiden Sie es, SSMS direkt auf der SQL-Box auszuführen
  • Nicht SELECT * aus einer großen Tabelle in SSMS, es sei denn, die Ergebnismenge kann in den Profilordner passen
  • Stellen Sie sicher, dass die maximale Speichereinstellung von SQL Server korrekt konfiguriert ist (sie hat möglicherweise zu diesem Problem in Bezug auf das Wachstum von Auslagerungsdateien beigetragen oder nicht).
11
Jon Seigel

Ich habe gerade das gleiche Problem erlitten. Nachdem ich die obigen Antworten gelesen hatte, fand ich Folgendes.

Werkzeuge | Optionen ist nicht die Antwort. Meins war auf Y: Laufwerk eingestellt, aber ich habe beobachtet, wie meine Abfrage ausgeführt wurde und der Speicherplatz auf dem Laufwerk C: von 2,9 GB auf 5,04 MB gesunken ist (bevor ich die Abfrage beendet habe).

Also dachte ich, es handelt sich wahrscheinlich um Caching-Ergebnisse (da sie sehr groß sind, da jede zurückgegebene Zeile einen großen Teil XML enthält) in das Temp-Verzeichnis, was Jon sagte, aber er war sich nicht sicher, wie Sie das ändern würden.

Um zu ändern, wo temporäre Dateien geschrieben werden, habe ich meine Umgebungsvariablen geöffnet und die Benutzervariablen TEMP und TMP (die beide auf C:\Temp eingestellt waren) bearbeitet, um in Z:\Temp zu schreiben.

Ich kann bestätigen, dass ich nach dieser Änderung beobachtet habe, wie die Abfrage eine sehr große Datei in meinem Verzeichnis Z:\Temp erstellt hat.

7
Nick Ryan