# OutOfMemoryException obwohl nur 1 Eintrag abgefragt wird



## meineD4t3nbank (22. Aug 2012)

Hallo Leute,
ich habe 1 Tabellen:

Die Tabelle (servicechecks) hat die Spalten
servicecheck_id (INT, PK, NN)
start_time
... usw

Es ist definitiv nur 1 Eintrag mit der servicecheck_id = 5 vorhanden.

Wenn ich nun die Abfrage 


```
SELECT     *
FROM         servicechecks
WHERE     (servicecheck_id = 5)
```

ausführe, bekomme ich eine OutOfMemoryException.

Die Tabelle ist zwar ein paar GB groß,
aber dennoch müsste diese simple Abfrage ohne Probleme funktionieren, oder?
Ich sehe den Fehler nicht.
Ich hoffe ihr könnt mir weiter helfen.

THX!


----------



## schlingel (22. Aug 2012)

Wenn die Tabelle ein paar GB groß ist und eine OutOfMemoryException fliegt gibt's zwei Möglichkeiten warum das passiert (die mir einfallen):
1. Du hast so viele Ergebnisse dass das deinen RAM sprengt.
2. Deine DB operiert im RAM. Auch der Tod für die Abfrage.

Puncto Query-Optimierung ist bei einem so simplen Query nicht mehr viel zu tun außer vielleicht das Select auf die Attribute zu beschränken die du brauchst.


----------



## meineD4t3nbank (22. Aug 2012)

Hm es scheint wohl ein Problem von Visual Studio zu sein (sehr warscheinlich das falsche Forum hier), denn im SQL Server Management Studio dauert es keine Sekunde bis ich das Ergebnis geliefert bekomme -.-

Oder hat doch jemand eine spontane Idee was es sein könnte?
Würde über den Reporting Serice gerne eine Übersicht aller Servicechecks erstellen lassen.


----------



## schlingel (22. Aug 2012)

Aso, du bist im VS unterwegs.

Der Explorer darin ist sowieso crappy aber mit dem aus 2008 hatte ich auch bei sehr großen DBs keine Probleme.


----------



## meineD4t3nbank (22. Aug 2012)

schlingel hat gesagt.:


> Wenn die Tabelle ein paar GB groß ist und eine OutOfMemoryException fliegt gibt's zwei Möglichkeiten warum das passiert (die mir einfallen):
> 1. Du hast so viele Ergebnisse dass das deinen RAM sprengt.
> 2. Deine DB operiert im RAM. Auch der Tod für die Abfrage.
> 
> Puncto Query-Optimierung ist bei einem so simplen Query nicht mehr viel zu tun außer vielleicht das Select auf die Attribute zu beschränken die du brauchst.



1. kann es nicht sein, da das WHERE ja den Primary Key abfragt.

zu 2.: habe einige Einträge jetzt mal in eine separierte Tabelle gepackt (650mb).
während die Abfrage läuft werden auch ca. 700mb RAM verwendet (es ist aber noch über 1GB verfügbar) und das Ergebnis der Abfrage ist wieder eine System.OutOfMemoryException -.-


----------



## schlingel (22. Aug 2012)

Wieviel RAM hat denn die AppDomain in dem das läuft?


----------



## meineD4t3nbank (22. Aug 2012)

Kann ich dir leider nicht sagen.
Wie bekomme ich das heraus?
Habe grad mal gegoogelt aber nichts gefunden was mir geholfen hat.


----------



## schlingel (22. Aug 2012)

Hm, hab gerade noch mal nachgeschaut. Das wird's wahrscheinlich eh nicht sein. Vermutlich ist es einfach der Debugger der in der IDE mit drinnen hängt der das ganze zum abstürzen bringt. Eine kurze Google-Suche hat mich da jetzt nicht weitergebracht ob es möglich ist da etwas zu machen.

Am besten du fragst noch mal auf Stackoverflow, dort sitzen viele, viele .Net-Leute.


----------

