/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Problemer med timeout - periodisk!!!
Fra : Martin Kjelsmark Lar~


Dato : 21-08-03 15:09

Hejsa Ng,

Jeg har problemer med en ASP side der periodisk laver timeout. Jeg kan
umiddelbart ikke gennemskue nogle problemer.

Siden kører på en IIS på en windows 2000 server, og databasen er en
Microsoft SQL 7.0

Nedenstående kode er taget ud af en større sammenhæng.
Timeout sker i 4. linie fra bunden ( conn.execute(strSQL) )

----------------------------------------------------------------------------
---------------------------
'Flytter fra indsendtUgenDerGak db til UgenDerGak db
strSQL = "select * from indsendtUgenDerGak where publiceres = 'true' order
by raekkefoelge desc"
set rsIndsendt = conn.execute(strSQL)

'Finder den størrste ugebrevID i ugen der gak
strSQL = "select ugebrevID from UgenDerGak order by UgenDerGakID desc"
Set rsugebrevID = conn.execute(strSQL)
if not rsugebrevID.eof then
nyugebrevID = cint(rsugebrevID("ugebrevID")) + 1
else
nyugebrevID = 1
end if

do until rsIndsendt.eof
'Finder den størrste ID i ugen der gak
strSQL = "select UgenDerGakID from UgenDerGak order by UgenDerGakID desc"
Set rsUgenDerGakID = conn.execute(strSQL)
if not rsUgenDerGakID.eof then
nyUgenDerGakID = cint(rsUgenDerGakID("UgenDerGakID")) + 1
else
nyUgenDerGakID = 1
end if

'Indsætter i den nye db
strSQL = "insert into UgenDerGak (UgenDerGakID, ugebrevID, overskrift,
tekst, brugerID, dato) values("& nyUgenDerGakID &", "& nyugebrevID &" , '"&_
rsIndsendt("overskrift") &"','"& rsIndsendt("tekst") &"', "&
rsIndsendt("brugerID") &", '"& rsIndsendt("dato") &"')"
conn.execute(strSQL)

' Sletter fra den gamle db
strSQL = "delete from indsendtUgenDerGak where indsendtUgenDerGakID = "&
rsIndsendt("indsendtUgenDerGakID")
conn.execute(strSQL)

rsIndsendt.movenext
loop

----------------------------------------------------------------------------
---------------------------

Mvh
Martin Kjelsmark



 
 
Dcasso (21-08-2003)
Kommentar
Fra : Dcasso


Dato : 21-08-03 15:34

' Sletter fra den gamle db
> strSQL = "delete from indsendtUgenDerGak where indsendtUgenDerGakID = "&
>rsIndsendt("indsendtUgenDerGakID")
> conn.execute(strSQL)

MAngler du ikke en stjerne: Delete * from

Dennis

Martin Kjelsmark Lar~ (21-08-2003)
Kommentar
Fra : Martin Kjelsmark Lar~


Dato : 21-08-03 16:24

> MAngler du ikke en stjerne: Delete * from

Burde ikke være nødvendigt.

Har tidligere haft en timeout ved en "update statement". Jeg tror fejlen har
noget at gøre med at min løkke kører på samme database objekt, som bliver
brugt i SQL sætningerne i løkken. Jeg kan bare ikke se nogle fejl!

Mvh Maritn Kjelsmark



Jens Gyldenkærne Cla~ (22-08-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-08-03 09:22

Dcasso skrev:

> MAngler du ikke en stjerne: Delete * from

Nej. Stjernen kan så vidt jeg ved kun bruges i Access. Den giver
heller ikke rigtig mening - man kan jo ikke nøjes med at slette
udvalgte felter med DELETE. Jeg kan ikke huske om Access kræver
stjernen eller den er valgfri der - men det er desværre nok
påkrævet. I MSSQL (som Martin anvender) er stjernen ikke gyldig i
en DELETE-sætning.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Chrisser (22-08-2003)
Kommentar
Fra : Chrisser


Dato : 22-08-03 07:20

Martin Kjelsmark Larsen wrote:
> 'Flytter fra indsendtUgenDerGak db til UgenDerGak db
> strSQL = "select * from indsendtUgenDerGak where publiceres =
> 'true' order by raekkefoelge desc"
> set rsIndsendt = conn.execute(strSQL)
>
> 'Finder den størrste ugebrevID i ugen der gak
> strSQL = "select ugebrevID from UgenDerGak order by UgenDerGakID
> desc" Set rsugebrevID = conn.execute(strSQL)
> if not rsugebrevID.eof then
> nyugebrevID = cint(rsugebrevID("ugebrevID")) + 1
> else
> nyugebrevID = 1
> end if

Her skal du lukke dit recordset efter dig.

> do until rsIndsendt.eof
> 'Finder den størrste ID i ugen der gak
> strSQL = "select UgenDerGakID from UgenDerGak order by
> UgenDerGakID desc" Set rsUgenDerGakID = conn.execute(strSQL)
> if not rsUgenDerGakID.eof then
> nyUgenDerGakID = cint(rsUgenDerGakID("UgenDerGakID")) + 1
> else
> nyUgenDerGakID = 1
> end if

Umiddelbart kan jeg ikke se nogen grund til at åbne dette recordset for
hvert gennemløb i løkken da du ikke bruger nogle variable -flyt det ud.
Og: hvis du åbner recordsets i en løkke er det vigtigt at du lukker dem
efter dig da hvert recordset indeholder en active connection som databasen
skal vedligeholde.

> 'Indsætter i den nye db
> strSQL = "insert into UgenDerGak (UgenDerGakID, ugebrevID,
> overskrift, tekst, brugerID, dato) values("& nyUgenDerGakID &", "&
> nyugebrevID &" , '"&_ rsIndsendt("overskrift") &"','"&
> rsIndsendt("tekst") &"', "& rsIndsendt("brugerID") &", '"&
> rsIndsendt("dato") &"')" conn.execute(strSQL)
>
> ' Sletter fra den gamle db
> strSQL = "delete from indsendtUgenDerGak where
> indsendtUgenDerGakID = "& rsIndsendt("indsendtUgenDerGakID")
> conn.execute(strSQL)
>
> rsIndsendt.movenext
> loop

Luk rsIndsendt efter dig.

Hvis ovenstående ikke hjælper bør du tjekke om din løkke kører som du
forventer, altså udskrive dine gennemløb.

Du kan også prøve at tage dine data fra rsIndsendt og smide over i et array
og bruge det i din løkke. Alternativt kan du cutte databaseforbindelsen før
løkken: rsIndsendt .ActiveConnection = Nothing

Mvh
Chrisser




Peter Lykkegaard (22-08-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 22-08-03 14:17


"Martin Kjelsmark Larsen" <martin@kjelsmark.dk> wrote in message
news:3f44d369$0$6837$ba624c82@nntp02.dk.telia.net...
>
> Jeg har problemer med en ASP side der periodisk laver timeout. Jeg kan
> umiddelbart ikke gennemskue nogle problemer.
>
> Siden kører på en IIS på en windows 2000 server, og databasen er en
> Microsoft SQL 7.0
>
[Snip ASP scripts - løkker mv]

Har du overvejet at lave _et_ SQL statement der arbejder på MSSQL i stedet
for at blande VBscript ind i det?

Du kan evt skrive i klar tekst hvad det er du gerne vil opnå
Så mon ikke vi kan strikke noget sammen ved fælles hjælp

mvh/Peter Lykkegaard



Peter Lykkegaard (22-08-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 22-08-03 15:36


"Peter Lykkegaard" <polonline@hot.mail.com> wrote in message
news:FJo1b.6629$6V5.4801@news.get2net.dk...
>
> Har du overvejet at lave _et_ SQL statement der arbejder på MSSQL i stedet
> for at blande VBscript ind i det?
>
Prøv at føre den her af i din queryanalyzer (på din testserver)
Og se om det ikke er noget ala det du gerne vil lave?

-------------------------------------------------------------
DECLARE @UgeBrevID Int
DECLARE @UgenDerGakID Int
select
@UgeBrevID = Max(ugebrevID),
@UgenDerGakID = Max(UgenDerGakID)
from UgenDerGak

select @UgeBrevID = ISNULL(@UgeBrevID + 1, 1)
select @UgenDerGakID = ISNULL(@UgenDerGakID + 1, 1)

insert into UgenDerGak (
UgenDerGakID, ugebrevID, overskrift, tekst, brugerID, dato
)
select
@UgeBrevID as UgeBrevID,
@UgenDerGakID as UgenDerGakID,
overskrift, tekst, brugerID, dato
from indsendtUgenDerGak
where publiceres = 'true'
-------------------------------------------------------------

mvh/Peter Lykkegaard




Peter Lykkegaard (22-08-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 22-08-03 23:04

Peter Lykkegaard wrote:
>>
> Prøv at føre den her af i din queryanalyzer (på din testserver)
> Og se om det ikke er noget ala det du gerne vil lave?
>
Der er sandsynligvis noget med nogle ID's der skal rettes til når dataene
bliver overført
Men ellers virker det lille script fremragende

mvh/Peter Lykkegaard



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408932
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste