[ASP] "error '80020009' Exception occurred"

Pagina: 1
Acties:
  • 268 views sinds 30-01-2008
  • Reageer

  • MrCyber
  • Registratie: Mei 2000
  • Laatst online: 24-05-2018
Ik krijg deze error bij het uitvoeren van mijn ASP pagina. "error '80020009' Exception occurred"
Heb al het hele net afgespeurd, maar het enige wat ik kan vinden is dat het blijkbaar ergens een overflow is. In de pagina met deze error creeer ik een aantal recordsets vanuit een database en met wat loop vergelijk ik deze met elkaar en afhankelijk van of records in 1 of meerdere recordsets voorkomen wordt er wat op het scherm gezet. Blijkbaar neemt dit teveel geheugen o.i.d. in beslag waardoor deze error ontstaat. Iemand enig idee of je daar iets aan kan doen ?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:02

gorgi_19

Kruimeltjes zijn weer op :9

Nah, meestal wordt er wel een foutregel weergegeven waaruit je wat kan afleiden. Staat die er niet?

Te weinig geheugen? Lijkt me sterk; hoe groot wil jij je recordssets wel niet maken?

In ieder geval een oplossing: debuggen, tracen, etc.

Methode:
1. Response.Buffer op true zetten
2. Een aantal Response.Write's neerzetten, i.c.m. Response.Flush
3. Fout isoleren
4. En waarschijnlijk is het een typefoutje of iets wat je vergeten was (een movenext ofzo)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • MrCyber
  • Registratie: Mei 2000
  • Laatst online: 24-05-2018
De foutmelding hierboven is dus de melding die ik krijg.

Heb al alles geprobeert qua debuggen etc.. het vage is dat de error op een lege regel gebeurt. Ook mijn research wijst in de richting van een overflow ergens aangeraden wordt om na elke loop de recordset te sluiten en leeg te maken wat ik dan ook netjes doe. Dit resulteerde dat de error gewoon een tiental records later wordt weergegeven.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:02

gorgi_19

Kruimeltjes zijn weer op :9

Ik geloof je direct, maar het wordt in ieder geval voor mij een beetje moeilijk gokken wat het probleem zou kunnen zijn.

Ik ben wel benieuwd hoe je hebt gedebugged als je het probleem niet hebt kunnen isoleren? Kan je een stukje code posten van waar je verwacht DAT het probleem zit, plus en min 10 regels ongeveer?
Dat een foutmelding gebeurd op een lege regel lijkt mij moeilijk; dat kan veroorzaakt zijn door een foute constructie of hij telt een beetje verkeerd.. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • pasz
  • Registratie: Februari 2000
  • Laatst online: 16-08 23:04
volgens mij heb je het hele net nog niet gehad.

google :
[url="http://www.google.nl/search?hl=nl&ie=UTF-8&oe=UTF-8&q=microsoft+error+80020009+Exception+occurred&lr="]http://www.google.nl/search?hl=nl&ie=UTF-8&oe=UTF-8&q=microsoft+error+80020009+Exception+occurred&lr=[/url]

Kun je niet even wat code posten, dan kunnen we wat beter helpen.

woei!


  • MrCyber
  • Registratie: Mei 2000
  • Laatst online: 24-05-2018
Code ziet er ongeveer als volgt uit (zit nu thuis en niet op het werk waar de code is, dus kan evt morgenochtend (das dus 's middags bij jullie in NL) de echte code wel ff posten)
SQL = "SELECT ProductType FROM ProductTypes ORDER BY ProductType"
set rstemp=conn.execute(SQL)
do while not rstemp.eof
response.write rstemp("ProductType")
SQL2 = "SELECT Product FROM Products WHERE ProductType = '" & rstemp("Product") & "'"
set rstemp2=conn.execute(SQL2)
do while not rstemp2.eof
SQL3 = "SELECT COUNT(*D FROM Subscription WHERE Product = '" & rstemp2("Product") & "'"
set rstemp3=conn.execute(SQL3)
if rstemp3(0) = 0 then
response.write rstemp2.("Product")
else
response.write "<b>" & rstemp2("Product") & "</b>"
end if
rstemp3.close()
set rstemp3=Nothing
rstemp2.movenext
loop
rstemp2.close()
set rstemp2=Nothing
rstemp.movenext
loop
rstemp.close
set rstemp=Nothing
Dan afhankelijk van het aantal records word de error op diverse plaatsen weergegeven.

normaal gesproken bevatten de tabellen de volgende aantallen records :
ProductTypes : 6
Products : 50
Subscription : > 5000

EDIT : Is er geen makkelijkere manier om code te posten ? Mijn tabs gaan zo naar de haaien.

  • pasz
  • Registratie: Februari 2000
  • Laatst online: 16-08 23:04
welke database gebruik je ? Access ?
wel eens gebruik gemaakt van Queries ? Deze kun je vanuit ASP ook direct aanroepen alsof het een tabel is

woei!


  • MrCyber
  • Registratie: Mei 2000
  • Laatst online: 24-05-2018
Op woensdag 24 juli 2002 02:30 schreef PaszWerken het volgende:
volgens mij heb je het hele net nog niet gehad.

google :
[url="http://www.google.nl/search?hl=nl&ie=UTF-8&oe=UTF-8&q=microsoft+error+80020009+Exception+occurred&lr="]http://www.google.nl/search?hl=nl&ie=UTF-8&oe=UTF-8&q=microsoft+error+80020009+Exception+occurred&lr=[/url]

Kun je niet even wat code posten, dan kunnen we wat beter helpen.
De meeste van deze berichten heb ik allemaal gelezen en de aangedragen oplossingen geprobeerd, maar tot op heden zonder suc6

  • MrCyber
  • Registratie: Mei 2000
  • Laatst online: 24-05-2018
Op woensdag 24 juli 2002 02:33 schreef PaszWerken het volgende:
welke database gebruik je ? Access ?
SQL 2000 SP1
wel eens gebruik gemaakt van Queries ? Deze kun je vanuit ASP ook direct aanroepen alsof het een tabel is
Ja heb ik, maar in dit geval biedt een query helaas geen uitkomst aangezien het SQL statement in de echte code nogal dynamisch is.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:02

gorgi_19

Kruimeltjes zijn weer op :9

Gorgi kijkt verbaasd en pakt zijn rekenmachientje..
60 * 5 = 300
En dan 300*5000 records doorlopen (althans, countfunctie) is erh... heel veel.

Gaat nu ff aan de slag.

Edit
Ah, zie SQL Server 2000.. :)
Dat vereenvoudigd de vaak heel erg aanzienlijk... :)

Vraagje:
Waarom maak je geen gebruik van Stored Procedures? (Ja, een SP kan je ook dynamisch opbouwen..:) )

Vraagje 2:
Waarom gebruik je Count(*D en niet Count(ID) (scheelt weer ietsie load)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • MrCyber
  • Registratie: Mei 2000
  • Laatst online: 24-05-2018
Op woensdag 24 juli 2002 02:36 schreef gorgi_19 het volgende:
Gorgi kijkt verbaasd en pakt zijn rekenmachientje..
60 * 5 = 300
En dan 300*5000 records doorlopen (althans, countfunctie) is erh... heel veel.
Tja... en de Subscription tabel kan straks in productie waarschijnlijk meer dan 300.000 records bevatten. (470 records / user * ±800 users)
Ah, zie SQL Server 2000.. :)
Dat vereenvoudigd de vaak heel erg aanzienlijk... :)

Vraagje:
Waarom maak je geen gebruik van Stored Procedures? (Ja, een SP kan je ook dynamisch opbouwen..:) )
Moet eerlijk zeggen dat ik dat nog niet geprobeerd heb. Voornamelijk omdat ik nog nooit SP's gebruikt heb.
Vraagje 2:
Waarom gebruik je Count(*D en niet Count(ID) (scheelt weer ietsie load)
Kan inderdaad beter. Scheelt weer iets inderdaad. Ik denk dat ik dat zelfs in de originele code doe, maar weet niet 100% zeker. Heb vandaag zoveel zitten klooien dat ik het allemaal niet meer bij kan houden.

  • klinz
  • Registratie: Maart 2002
  • Laatst online: 10-08 15:44

klinz

weet van NIETS

"error '80020009' Exception occurred"

Deze heb ik vaak gehad... bij mij is de oorzaak meestal het uitlezen van een recordset zonder records. Test dus eerst met recordset.EOF of er uberhaupt wel records in de recordset voorkomen.

  • MrCyber
  • Registratie: Mei 2000
  • Laatst online: 24-05-2018
Op woensdag 24 juli 2002 02:45 schreef klinz het volgende:
"error '80020009' Exception occurred"

Deze heb ik vaak gehad... bij mij is de oorzaak meestal het uitlezen van een recordset zonder records. Test dus eerst met recordset.EOF of er uberhaupt wel records in de recordset voorkomen.
hmmmmm... dat gaant ik morgen eens ff proberen. Dat zou best eens kunnen.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:02

gorgi_19

Kruimeltjes zijn weer op :9

Op woensdag 24 juli 2002 02:44 schreef MrCyber het volgende:

[..]

Tja... en de Subscription tabel kan straks in productie waarschijnlijk meer dan 300.000 records bevatten. (470 records / user * ±800 users)
[..]
Sowieso denk ik bij zulke aantallen users dat je voorzichtig moet zijn met een count-functie. Beter lijkt me om een tabel aan te maken en door middel van een trigger eens in het uur bijvoorbeeld een stored procedure uit te voeren, die deze tabel vult. Je hebt dan weliswaar redunante data, maar dit weegt niet op tegen het snelheidsvoordeel wat je haalt.

Een tweede mogelijkheid is om al vooraf een aparte kolom / tabel met de aantallen te maken (ook hier weer redunant). Met een update / insert wordt dan deze tabel ook aangepast. Ook hier geldt weer: dubbele data, maar met grote aantallen records kan dat een voordeel opleveren.
Moet eerlijk zeggen dat ik dat nog niet geprobeerd heb. Voornamelijk omdat ik nog nooit SP's gebruikt heb.
Zeker met zulke aantallen hebben SP's een voordeel. Deze zijn min of meer compiled (dacht ik), waardoor de uitvoer en verwerking sneller gaat. Plus je voert maar 1x de code in en krijgt deze goed terug.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • MrCyber
  • Registratie: Mei 2000
  • Laatst online: 24-05-2018
Op woensdag 24 juli 2002 02:45 schreef klinz het volgende:
"error '80020009' Exception occurred"

Deze heb ik vaak gehad... bij mij is de oorzaak meestal het uitlezen van een recordset zonder records. Test dus eerst met recordset.EOF of er uberhaupt wel records in de recordset voorkomen.
YIPPEEE.. dat was het. Thanks allemaal.
Pagina: 1