|
| 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
| |
|
|